为什么这种基于条件的列表理解不起作用?

时间:2016-10-08 18:49:06

标签: python list python-2.7 list-comprehension

我想在删除所有重复项后从现有列表创建列表。 如果我使用" 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

2 个答案:

答案 0 :(得分:2)

评估表达式j1=list(set(l1)) ,然后将其分配给 j1 。因此在评估期间 j1 保持为空。

BTW:删除重复项很容易就是将列表传递给set函数,然后传递给list函数,如果需要列表:

{{1}}

答案 1 :(得分:0)

j1在开始时为[],并且未在列表理解中的中间点进行更新。可以这样做而不是列表理解:

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

print l1 
print j1