2017-02-28 2 views
0

複数のリストを1つの行にまとめて処理する可能性があるかどうかを質問したいと思いますか?私はPython 2.7を使用しています。1つのリストの理解の行に2つのリストを処理する可能性はわずかですか?

n=[1,2,3,4,5,6,7] 
m=[1,7] 
c=[] 

for x in m: 
    if x in n: 
     c.append(x) 
     n.pop(n.index(x)) 

print n 
print c 

出力は次のとおりです:ここで

は、コードは次のようになります

今、私はにコード(8行目に行5)を回すことができる場合、私は思ったんだけど
[2,3,4,5,6] 
[1,7] 

リストの理解度を使って1行にする?

私はあなたの助言に感謝します。私の質問に重複があるかどうか教えてください。どうもありがとうございました。あなたは、リストから値をポップするので、このようにそれを行うことができます

+1

おそらく(そのポップのため)ではありませんが、正確に何をしたいですか? –

+1

m内に存在するn個のアイテムを削除する必要がある場合は、問題ありません。 –

+0

ああ。プログラムの実行速度が遅いことに気がついたため、できるだけ速くコードを実行しようとしています(リストの理解度を上げると、実行速度が向上することが期待されています)。 –

答えて

1

では、追加の操作を実行する必要がある場合は、値

n=[1,2,3,4,5,6,7] 
m=[1,7] 
c=[n.pop(n.index(x)) for x in m if x in n] 
print n 
print c 
+0

ありがとうありがとうございます。 –

1
n=[1,2,3,4,5,6,7] 
m=[1,7] 
print set(n)-set(m) 
> [2,3,4,5,6] 

が自分の変数にセットを割り当てる返します。セットへの変換には大きなリストに時間がかかるが、メンバーシップ、サブトラクション、ユニオンまたは交差操作は非常に速くなければならない。

+0

ありがとうございました。私はset()を最初に学ぶべきです。しかし、なぜ私は1つの答え(緑色)しかチェックできないのですか? –

関連する問題