私はPythonを初めて使用し、誰かがこれを手伝ってくれるかどうか疑問に思っていました。bの要素がaにあるかどうかを確認しようとしています。これが私の試みです。現在、出力がありません。どんな助けでもありがたいです、ありがとう!
a = [1]
b = [1,2,3,4,5,6,7]
for each in b:
if each not in a == True:
print(each + "is not in a")
私はPythonを初めて使用し、誰かがこれを手伝ってくれるかどうか疑問に思っていました。bの要素がaにあるかどうかを確認しようとしています。これが私の試みです。現在、出力がありません。どんな助けでもありがたいです、ありがとう!
a = [1]
b = [1,2,3,4,5,6,7]
for each in b:
if each not in a == True:
print(each + "is not in a")
あなたは2つの異なることをテストしていて、結果はFalseです。Pythonは演算子をチェーンし、次の場合に効果的にテストします(each is in a) and (a == True)
。
>>> 'a' in ['a'] == True
False
>>> ('a' in ['a']) and (['a'] == True)
False
>>> ('a' in ['a']) == True
True
True
とにかく、ifステートメントでテストする必要はありません。
if each not in a:
十分です。
あなたはただ言うことができるはずです:
if each not in a:
print ("%d is not in a" % each)
実際の式は、演算子チェーンを使用しています。
if a > b > c:
次のように解析します:
if (a > b) and (b > c):
Pythonで。これは、式が実際に次のように解析されていることを意味します。
if (each not in a) and (a == True):
ただし、a == True
常にが返さFalse
れるため、if
ブロックは実行されません。
a = [1,2,3]
b = [1,2,3,4,5,6,7]
c = [7,8,9]
print set(a) <= set(b) #all elements of a are in b
print set(c) <= set(b) #all elements of c are in b
BとAの違いを見たほうがいい
set(b).difference(set(a))
別の方法:
for bb in b:
try:
a.index(bb)
except:
print 'value is not in the list: ' + str(bb)
==True は必要ありません。Just: if each not in a:
これは、セットを使用して非常に簡単です:
a = [1]
b = [1, 2]
only_in_b = set(b) - set(a)
# set([2])
2つのリストが大きい場合は、それを追加したいと思います. これは最善の方法ではありません。アルゴリズムは O(n^2) です。最良の方法は、要素をキーとしてディクショナリに追加して、a をトラバースすることです。その後、2 番目のリストをトラバースし、要素が既に辞書にあるかどうかを確認します。代わりに、これは O(n) アルゴリズムです。