我是 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")
您正在测试两种不同的东西,结果是 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):
在蟒蛇。这意味着您的表达式实际上被解析为:
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))
你不需要 ==True。只是:如果每个都不在一个:
使用sets真的很容易:
a = [1]
b = [1, 2]
only_in_b = set(b) - set(a)
# set([2])
其他方式:
for bb in b:
try:
a.index(bb)
except:
print 'value is not in the list: ' + str(bb)
如果这两个列表很大,我想补充一点。这不是最好的方法。你的算法是 O(n^2)。最好的方法是遍历a,将元素作为键添加到字典中。然后,遍历第二个列表,检查元素是否已经在字典中,这是一个 O(n) 算法。