Python 为什么这种基于条件的列表理解不起作用?
我想在删除所有重复项后从现有列表创建一个列表。 若我使用“for循环”,那个么这个程序可以运行,但若我使用列表,那个么什么都不会发生Python 为什么这种基于条件的列表理解不起作用?,python,list,python-2.7,list-comprehension,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] pr
#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为l1中的i,如果i不在j1中]
被计算,然后分配给j1。因此,在评估期间,j1保持为空
顺便说一句:删除重复项的一个简单方法是将列表传递给函数,然后在需要列表时传递给函数:
j1=list(set(l1))
j1
在开始时为[]
,在列表中的中间点不更新。可以这样做,而不是列表理解:
l1=[1,2,2,3,1,1,2]
j1=list(set(l1))
print l1
print j1
如果您只想删除副本,可以将列表转换为集合i,e
set(l)