可能性の重複をリストを削除します。
Get difference from two lists in PythonはPythonでリストから
これを行う簡単な方法は何ですか?私は自分で試していますが、私はそれを理解することはできません。 リストaとリストbの場合、新しいリストにはリストaのみのアイテムが必要です。だから:
私はコードを書こうとしましたが、毎回常にリスト全体を返します。
可能性の重複をリストを削除します。
Get difference from two lists in PythonはPythonでリストから
これを行う簡単な方法は何ですか?私は自分で試していますが、私はそれを理解することはできません。 リストaとリストbの場合、新しいリストにはリストaのみのアイテムが必要です。だから:
私はコードを書こうとしましたが、毎回常にリスト全体を返します。
これは機能しますか?
より簡潔a = ["apple", "carrot", "lemon"]
b = ["pineapple", "apple", "tomato"]
new_list = []
for v in a:
if v not in b:
new_list.append(v)
print new_list
または、:
new_list = filter(lambda v: v not in b, a)
あなたはこの要素がnew_list
で終わるする必要がある文字通りを教えてくれるlist comprehensionを使用して書き込むことができます。
a = ['apple', 'carrot', 'lemon']
b = ['pineapple', 'apple', 'tomato']
# This gives us: new_list = ['carrot' , 'lemon']
new_list = [fruit for fruit in a if fruit not in b]
または、使用をforループ:
new_list = []
for fruit in a:
if fruit not in b:
new_list.append(fruit)
これらのアプローチは非常によく似ています。そのため、Pythonにもリストを簡単に作成するためのリスト内包があります。
あなたはこの必要があります。
a = ["apple", "carrot", "lemon"]
b = ["pineapple", "apple", "tomato"]
new_list = [x for x in a if (x not in b)]
print new_list
あなたはsetを使用することができます。
# Assume a, b are Python lists
# Create sets of a,b
setA = set(a)
setB = set(b)
# Get new set with elements that are only in a but not in b
onlyInA = setA.difference(b)
はUPDATE
iurisilvioとmgilsonが指摘したようにa
とb
がしなければ、この方法はのみ動作します重複を含まず、要素の順序が重要でない場合
sets(または、は2.6から廃止されているため組み込み済み)はどうですか?
from sets import Set
a = Set(['apple', 'carrot', 'lemon'])
b = Set(['pineapple','apple','tomato'])
new_set = a.difference(b)
print new_set
は、私は、これが移動するための方法であると思います出力
Set(['carrot', 'lemon'])
を与えるが、それは文字列が重複した場合には、リストを変更します。 – iurisilvio
@iurisilvio:そうです。このアプローチは、 'a'と' b'が一意のエントリしか含んでいない場合にのみ機能します。その場合、 'a'、' b'のために 'set'を使うのはもっと意味があります。しかし、これはおそらく最も速いアプローチです。 –
項目の順序が重要であれば動作しませんが、ここではそうでないかもしれません(私の+1) – mgilson