2016-10-08 10 views
1

すべての重複を削除した後、既存のリストからリストを作成したいと思います。 "for loop"を使用するとプログラムが動作しますが、リスト内包を使用すると何も起こりません。この条件ベースのリストの理解が機能しないのはなぜですか?

#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

あなたは単にリストをiに設定すると 'set(l)'を削除することができます。 –

答えて

2

発現[i for i in l1 if i not in j1]を評価した後、J1に割り当てられます。したがって、評価中にj1は空です。ところで

:簡単には重複を除去せたあなたがリストを必要とする場合list機能に、その後set関数にリストを渡すとすることです:

j1=list(set(l1)) 
0

j1は、開始時に[]ではないですリスト内の中間点で更新されます。しかし、リストの理解の代わりにこれを行うことができます:

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

print l1 
print j1 
関連する問題