2017-04-27 8 views
2

2つのリストがある場合、あるリストのアイテムが別のリストと比較されているかどうかを確認できます。たとえば、list1=[1,2,3]list2=[2,3,5,1]があった場合、リスト2の数字がリスト1に一致するかどうかを、同じ順序でなくても、他の数字がある場合でも確認できます。あなたが2つの数字セットを持っていて、それらの交差点を取得しなければならなかったときのような、数学のような並べ替え。 list2にorderや他の数字に関係なくlist1にあるすべての項目があるかどうかを確認する方法はありますか?私はリストが他のリストと同等であるかどうかに基づいて何かが真であるかどうかを検出し、変数を "true"に変更するifコマンドに使用しています。2つのリストを互いに照合する方法は?

ここに、私が働きたいコードのビットに似た何かの例があります。

listOne=[] 
listRight=[1,2,5] 

right="false" 
while(win != "true"): 

    option=input("What number would you like to add to list one?") 
    if(option=="1"): 
     listOne.append(1) 
    elif(option=="2"): 
     listOne.append(2) 

    if(listOne==listRight): 
    right="true" 

ありがとうございました。

注:私のリストには重複はありません。 1つは3つの数字、すなわち[1,4,7]のリストになります。もう1つのリストは0から9までの数字です。余分な数字があっても、3つの数字のすべてが2番目のリストのどこにあっても確認できるようにしたい。 [1,5,9]が最初のリストで、[7,1,3,6,9,5]が2番目のリストであった場合と同様に、彼らはお互いが等しいことが真実に戻るでしょう。

+0

[注文に関係なく、2つのリストに同じ要素があるかどうかを確認しますか?](http://stackoverflow.com/questions/8866652/determine-if-2-lists-have-the-same-elements-注文に関係なく) –

答えて

5

はい、使用はを設定します。

>>> list1=[1,2,3] 
>>> list2=[2,3,5,1] 
>>> set(list1) & set(list2) # intersection 
{1, 2, 3} 
>>> set(list1) | set(list2) # union 
{1, 2, 3, 5} 
>>> set(list1) - set(list2) # set difference 
set() 
>>> set(list2) - set(list1) # set difference 
{5} 
>>> set(list1)^set(list2) # symmetric difference 
{5} 
>>> 

サブセット関係:

>>> set(list1) < set(list1) # proper subset with < 
False 
>>> set(list1) < set(list1) 
False 
>>> set(list1) < set(list2) 
True 
>>> set(list1) <= set(list1) # normal subset 
True 
>>> 
3

Pythonはsetタイプを持っている、とあなたはabのサブセットであるかどうかを確認するためにa <= b(以下読めるb.issubset(a))を使用することができます。

いくつかの例({a, b, c}set([a, b, c])の省略形です):あなたのコード内で使用

>>> {1, 2} <= {1, 2, 3} 
True 

>>> {2, 1, 5} <= {1, 5, 2} 
True 

>>> set() <= {0} 
True 

>>> {1, 2, 4} <= {1, 2, 5} 
False 

attempt = set() 
right = {1, 2, 5} 

while not right <= attempt: 
    option = input("What number would you like to add to list one?") 
    attempt.add(int(option)) 
+0

ありがとう私はまだ試していないが、これは他の数字がある場合でもこれは動作しますか?基本的にこれはティックタックつま先のためのもので、あなたが勝つことができる方法と他のリストは彼らが行った場所です(私はこれが良い方法ではないことを知っています)が、私は[ 1,2,3]と私はそれらの3つの数字がリスト[2,6,9,3,4,1]にあるかどうかを見たいと思っていました。 – JakeNBake

+0

@JacobGilger:はい。これは "サブセットの"演算子です。 – Ryan

0

2つのリストの数字が一致しているかどうかを確認したいとしたら、正確にはどういう意味ですか? list1 = [1, 1]list2 = [1, 1, 1]とすると、この場合はTrueの戻り値を期待しますか?はい、またはあなたが気にしない場合は、単にセットを使用してあなたの答えです。

list1 = [1, 2, 3] 
list2 = [1, 3, 3, 3, 2] 
list3 = [3, 2] 
print(set(list1) == set(list2)) # => True 
print(set(list1) == set(list3)) # => False 

あなたのアプリケーションでは、重複が発生するとは思わないので、これは受け入れられるはずです。しかし、が重複していることを期待している場合は、から最初にメソッドを作成したいと思うかもしれません。リストを最初に並べ替えることができます。

+0

そうですね、私は重複を期待していません感謝 – JakeNBake

関連する問題