2016-10-08 107 views
1

我想在刪除所有重複項後從現有列表創建一個列表。 如果我使用「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 
+0

如果你只是想刪除重複你可以轉換列表設置我,e'設置(升) –

回答

2

表達[i for i in l1 if i not in j1]被評估,然後分配給J1。因此在評估期間j1保持空白。

BTW:一個簡單的是刪除重複的是列表傳遞給set功能,然後到list功能,如果你需要一個列表:

j1=list(set(l1)) 
0

j1[]開始和不更新列表理解中的中間點。可以這樣做,而不是列表理解雖然:

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

print l1 
print j1 
相關問題