35

2 つのリストを比較して、最初のリストの値が 2 番目のリストにある場合にメッセージを出力しようとしています。

def listCompare():
  list1 = [1, 2, 3, 4, 5]
  list2 = [5, 6, 7, 8, 9]
  if list1 in list2:
    print("Number was found")
  else:
    print("Number not in list")

この例では、両方のリストに 5 があるため、ifを に評価します。Trueこれは機能しません。また、2 つのリストを比較する最も簡単な方法がわかりません。

4

6 に答える 6

15

さまざまな方法があります。あるリストに他のリストの要素が含まれているかどうかを確認したいだけなら、これを行うことができます..

not set(list1).isdisjoint(list2)

Python 2.6以降isdisjointよりも使用する方が良いと思います。intersection

于 2013-04-22T01:29:39.147 に答える
9

リストを比較する組み込み関数があります。

以下は cmp() メソッドの構文です −</p>

cmp(list1, list2)

#!/usr/bin/python

list1, list2 = [123, 'xyz'], [123, 'xyz']

print cmp(list1,list2)

上記のプログラムを実行すると、次の結果が生成されます-</p>

0

結果が同点の場合、つまり 0 が返されます

于 2015-05-12T07:25:54.900 に答える
8

元のアプローチは、リスト内包表記で機能します。

def listCompare():
  list1 = [1, 2, 3, 4, 5]
  list2 = [5, 6, 7, 8, 9]
  if [item for item in list1 if item in list2]:
    print("Number was found")
  else:
    print("Number not in list")
于 2013-04-22T02:05:10.510 に答える
6

リストをセットに変更し、& 関数を使用して両方のセットを比較できます。例えば:

list1 = [1, 2, 3, 4, 5]
list2 = [5, 6, 7, 8, 9]

if set(list1) & set(list2):
    print "Number was found"
else:
    print "Number not in list"

「&」演算子は、2 つのセット間の交点を示します。交点がある場合は、交点の集合を返します。交点がない場合は、空のセットが返されます。

Python で "if" 演算子を使用して空のセット/リスト/辞書/タプルを評価すると、ブール値の False が返されます。

于 2015-07-16T14:18:20.997 に答える