【问题标题】:Why is this condition-based list comprehension not working?为什么这种基于条件的列表理解不起作用?
【发布时间】:2017-02-17 13:34:37
【问题描述】:

我想在删除所有重复项后从现有列表创建一个列表。 如果我使用“for 循环”,程序可以运行,但如果我使用列表推导,则不会发生任何事情。

#use for loop
l=[1,2,2,3,1,1,2]
j=[]

for i in l:
    if i not in j:
        j.append(i)

print l
print j


#using list
l1=[1,2,2,3,1,1,2]
j1=[]

j1=[i for i in l1 if i not in j1]

print l1 
print j1

【问题讨论】:

  • 如果您只想删除重复项,您可以将列表转换为设置 i,e set(l)

标签: python list python-2.7 list-comprehension


【解决方案1】:

j1 开头是 [],并且不会在列表理解的中间点更新。可以这样做而不是列表理解:

l1=[1,2,2,3,1,1,2]
j1=list(set(l1))

print l1 
print j1

【讨论】:

    【解决方案2】:

    表达式[i for i in l1 if i not in j1] 被求值,然后分配给j1。所以在评估期间 j1 保持为空。

    顺便说一句:删除重复项的简单方法是将列表传递给 set 函数,然后如果需要列表,则传递给 list 函数:

    j1=list(set(l1))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2018-06-01
      • 2018-06-09
      • 1970-01-01
      相关资源
      最近更新 更多