想了解如何在Python中的for循环中删除列表元素?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在python中的for循环中删除列表元素和元素的相关问题,此外,我们还将为您介绍关
想了解如何在Python中的for循环中删除列表元素?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在python中的for循环中删除列表元素和元素的相关问题,此外,我们还将为您介绍关于For循环中的Python列表、python - 如何在for循环中一次访问两个元素而不会在python中重复?、Python for循环中添加字典到列表,结果列表中全是循环中的最后一个值、python – 列表中元素的顺序是否会导致for循环中的错误?的新知识。
本文目录一览:- 如何在Python中的for循环中删除列表元素?(如何在python中的for循环中删除列表元素和元素)
- For循环中的Python列表
- python - 如何在for循环中一次访问两个元素而不会在python中重复?
- Python for循环中添加字典到列表,结果列表中全是循环中的最后一个值
- python – 列表中元素的顺序是否会导致for循环中的错误?
如何在Python中的for循环中删除列表元素?(如何在python中的for循环中删除列表元素和元素)
我有一个清单
a = ["a", "b", "c", "d", "e"]
我想在如下所示的for循环中删除此列表中的元素:
for item in a: print item a.remove(item)
但这是行不通的。我能做什么?
答案1
小编典典使用for
循环遍历列表时,不允许从列表中删除元素。
重写代码的最佳方法取决于你要执行的操作。
例如,你的代码等效于:
for item in a: print itema[:] = []
另外,你可以使用while循环:
while a: print a.pop(0)
我正在尝试删除符合条件的项目。然后我转到下一个项目。
你可以将每个不符合条件的元素复制到第二个列表中:
result = []for item in a: if condition is False: result.append(item)a = result
或者,你可以使用filter或列表推导并将结果分配回a:
a = filter(lambda item:... , a)
要么
a = [item for item in a if ...]
其中…代表你需要检查的条件。
For循环中的Python列表
我是Python的新手,并且有一个关于使用for循环更新列表的问题。这是我的代码:
urls = [''http://www.city-data.com/city/javascript:l("Abbott");'' , ''http://www.city-data.com/city/javascript:l("Abernathy");'' ,''http://www.city-data.com/city/Abilene-Texas.html'' ,''http://www.city-data.com/city/javascript:l("Abram-Perezville");'' ,''http://www.city-data.com/city/javascript:l("Ackerly");'' , ''http://www.city-data.com/city/javascript:l("Adamsville");'',''http://www.city-data.com/city/Addison-Texas.html'']for url in urls: if "javascript" in url: print url url = url.replace(''javascript:l("'','''').replace(''");'',''-Texas.html'') print urlfor url in urls: if "javascript" in url: url = url.replace(''javascript:l("'','''').replace(''");'',''-Texas.html'')print "\n" print urls
我使用了第一个for循环来检查语法是否正确,并且工作正常。但是第二个for循环是我要使用的代码,但是无法正常工作。如何使用第二个for循环全局更新列表,以便可以在for循环外打印或存储更新的列表?
答案1
小编典典您可以使用其索引更新列表项:
for i, url in enumerate(urls): if "javascript" in url: urls[i] = url.replace(''javascript:l("'','''').replace(''");'',''-Texas.html'')
另一种选择是使用列表理解:
def my_replace(s): return s.replace(''javascript:l("'','''').replace(''");'',''-Texas.html'')urls[:] = [my_replace(url) if "javascript" in url else url for url in urls]
这urls[:]
意味着用urls
列表理解创建的新列表替换列表的所有项目。
您的代码无法正常工作的原因是,您正在将变量分配给url
其他对象,并且将对象的引用之一更改为指向其他对象不会影响其他引用。因此,您的代码等效于:
>>> lis = [''aa'', ''bb'', ''cc'']>>> url = lis[0] #create new reference to ''aa''>>> url = lis[0].replace(''a'', ''d'') #now assign url to a new string that was returned by `lis[0].replace`>>> url ''dd''>>> lis[0]''aa''
还要注意,str.replace
总是返回一个新的字符串副本,它永远不会更改原始字符串,因为字符串在Python中是不可变的。如果lis[0]
是列表,并且您使用.append
,.extend
等对它执行了任何就地操作,那么这也将影响原始列表。
python - 如何在for循环中一次访问两个元素而不会在python中重复?
先检查 crosstab
,然后检查 dot
s = pd.crosstab(df.Celebrity,df.Username)
s = s.dot(s.T)
out = s.mask(np.triu(np.ones(s.shape)).astype(bool)).stack()
Out[301]:
Celebrity Celebrity
B A 1.0
C A 1.0
B 0.0
D A 2.0
B 0.0
C 1.0
dtype: float64
,
首先,函数 num_of_fans_overlap
不应返回 print()
。
def num_of_fans_overlap(cel1,cel2,data):
l = [cel1,cel2]
Res = len(data.loc[data['Usernames'].map(data.groupby('Usernames').agg(set)['Celebrity'].eq(set(l)))])/2
return int(Res)
其次,如果变量 celebrities
是 Celebrity
列上的唯一值列表。
from itertools import combinations
celebrities = list(data.Celebrity.unique())
for (cel1,cel2) in combinations(celebrities,2):
fans_overlap = num_of_fans_overlap(cel1,data)
print((cel1,fans_overlap))
,
最简单的方法:
celebs = ["A","B","C","D"]
for i in range(len(celebs)):
for j in range(i+1,len(celebs)):
celeb_pairs = (celebs[i],celebs[j])
run_your_function_here(*celeb_pairs,other,parameters)
您也可以使用 itertools.combinations
函数优雅地执行此操作:
import itertools
celebs = ["A","D"]
for celeb1,celeb2 in itertools.combinations(celebs,2):
run_your_function_here
Python for循环中添加字典到列表,结果列表中全是循环中的最后一个值
案例1
item1 = {}
gender_areas = []
for ge in gender:
# 男性
man = ge.split(":")[0].strip() or ''
# print("man",man)
# 男性比例
man_percent = ge.split(":")[1].strip() or ''
# print("man_percent",man_percent)
item1["man"] = man
item1["man_percent"] = man_percent
print(item1)
gender_areas.append(item1)
print("gender_areas", gender_areas)
运行结果:
全是女性,每次都是赋值最后一个字典
gender_areas [{'gender_area': '性别分布', 'man': '女性', 'man_percent': '13.46%'}, {'gender_area': '性别分布', 'man': '女性', 'man_percent': '13.46%'}]
解决方法1.
把item1 = {} 移到循环句里面,即可.
gender_areas = []
for ge in gender:
item1 = {}
# 男性
man = ge.split(":")[0].strip() or ''
# print("man",man)
# 男性比例
man_percent = ge.split(":")[1].strip() or ''
# print("man_percent",man_percent)
item1["man"] = man
item1["man_percent"] = man_percent
print(item1)
gender_areas.append(item1)
print("gender_areas", gender_areas)
运行结果正确:
gender_areas [{'gender_area': '性别分布', 'man': '男性', 'man_percent': '86.54%'}, {'gender_area': '性别分布', 'man': '女性', 'man_percent': '13.46%'}]
解决方法2.使用浅拷贝
def func():
...
yield result
list = []
for dic in func():
list.append(dic.copy())
python – 列表中元素的顺序是否会导致for循环中的错误?
我正在使用一个简单的脚本来逃避某些HTML字符,并且遇到了一个错误,这个错误似乎是由我的列表escape_pairs中的元素顺序引起的.我在循环中不是modifying the lists,所以我想不出任何我在这里忽略的Python /编程原理.
escape_pairs = [(">",">"),("<","<"),('"',"""),("&","&")]
def escape_html(s):
for (i,o) in escape_pairs:
s = s.replace(i,o)
return s
print escape_html(">")
print escape_html("<")
print escape_html('"')
print escape_html("&")
回报
&gt;
&lt;
&quot;
&
但是当我在escape_pairs列表中切换元素的顺序时,bug就消失了
>>> escape_pairsMod = [("&","&"),(">",">")]
>
<
"
&
让我们看一下>和清单 –
escape_pairs = [(">","&")]
在遍历escape_pairs时,首先得到>并用& gt;替换它.这导致字符串变为’& gt; .然后你继续迭代,最后你找到(“&”,“& amp;”),然后你替换&在带有& amp;的字符串中,使结果成为你现在得到的结果.
更改列表的顺序时,您将获得正确的结果.但这仍然只是因为你首先考虑到&只有在那之后你还考虑了其他.
根据字典,您可以使用str.translate来共同翻译字符串.示例 –
>>> escape_pairs = [(">","&")]
>>> escape_dict = dict(escape_pairs)
>>> t = str.maketrans(escape_dict)
>>> ">".translate(t)
'>'
>>> "> & <".translate(t)
'> & <'
但是,如果您想要做的是HTML转义字符串,那么您应该使用标准库 – cgi
–
>>> import cgi
>>> cgi.escape("< > &")
'< > &'
此外,如果您使用的是Python 3.2,则可以使用html.escape
,例如 –
>>> import html
>>> html.escape("< > &")
'< > &'
今天关于如何在Python中的for循环中删除列表元素?和如何在python中的for循环中删除列表元素和元素的分享就到这里,希望大家有所收获,若想了解更多关于For循环中的Python列表、python - 如何在for循环中一次访问两个元素而不会在python中重复?、Python for循环中添加字典到列表,结果列表中全是循环中的最后一个值、python – 列表中元素的顺序是否会导致for循环中的错误?等相关知识,可以在本站进行查询。
本文标签: