GVKun编程网logo

如何在Python中的for循环中删除列表元素?(如何在python中的for循环中删除列表元素和元素)

18

想了解如何在Python中的for循环中删除列表元素?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在python中的for循环中删除列表元素和元素的相关问题,此外,我们还将为您介绍关

想了解如何在Python中的for循环中删除列表元素?的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于如何在python中的for循环中删除列表元素和元素的相关问题,此外,我们还将为您介绍关于For循环中的Python列表、python - 如何在for循环中一次访问两个元素而不会在python中重复?、Python for循环中添加字典到列表,结果列表中全是循环中的最后一个值、python – 列表中元素的顺序是否会导致for循环中的错误?的新知识。

本文目录一览:

如何在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列表

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中重复?

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)

其次,如果变量 celebritiesCelebrity 列上的唯一值列表。


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循环中添加字典到列表,结果列表中全是循环中的最后一个值

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循环中的错误?

python – 列表中元素的顺序是否会导致for循环中的错误?

我正在使用一个简单的脚本来逃避某些HTML字符,并且遇到了一个错误,这个错误似乎是由我的列表escape_pairs中的元素顺序引起的.我在循环中不是modifying the lists,所以我想不出任何我在这里忽略的Python /编程原理.

escape_pairs = [(">","&gt;"),("<","&lt;"),('"',"&quot;"),("&","&amp;")]

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("&")

回报

&amp;gt;
&amp;lt;
&amp;quot;
&amp;

但是当我在escape_pairs列表中切换元素的顺序时,bug就消失了

>>> escape_pairsMod = [("&","&amp;"),(">","&gt;")]

&gt;
&lt;
&quot;
&amp;
最佳答案
是的,在您的第一次实施中,它可以.

让我们看一下>和清单 –

escape_pairs = [(">","&amp;")]

在遍历escape_pairs时,首先得到>并用& gt;替换它.这导致字符串变为’& gt; .然后你继续迭代,最后你找到(“&”,“& amp;”),然后你替换&在带有& amp;的字符串中,使结果成为你现在得到的结果.

更改列表的顺序时,您将获得正确的结果.但这仍然只是因为你首先考虑到&只有在那之后你还考虑了其​​他.

根据字典,您可以使用str.translate来共同翻译字符串.示例 –

>>> escape_pairs = [(">","&amp;")]
>>> escape_dict = dict(escape_pairs)
>>> t = str.maketrans(escape_dict)
>>> ">".translate(t)
'&gt;'
>>> "> & <".translate(t)
'&gt; &amp; &lt;'

但是,如果您想要做的是HTML转义字符串,那么您应该使用标准库 – cgi

>>> import cgi
>>> cgi.escape("< > &")
'&lt; &gt; &amp;'

此外,如果您使用的是Python 3.2,则可以使用html.escape,例如 –

>>> import html
>>> html.escape("< > &")
'&lt; &gt; &amp;'

今天关于如何在Python中的for循环中删除列表元素?如何在python中的for循环中删除列表元素和元素的分享就到这里,希望大家有所收获,若想了解更多关于For循环中的Python列表、python - 如何在for循环中一次访问两个元素而不会在python中重复?、Python for循环中添加字典到列表,结果列表中全是循环中的最后一个值、python – 列表中元素的顺序是否会导致for循环中的错误?等相关知识,可以在本站进行查询。

本文标签: