Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么这种基于条件的列表理解不起作用?_Python_List_Python 2.7_List Comprehension - Fatal编程技术网

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

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

我想在删除所有重复项后从现有列表创建一个列表。 若我使用“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为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)