我是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")
答案 0 :(得分:4)
你正在测试两种不同的东西,结果是假的; Python是chaining the operators,有效地测试(each is in a) and (a == True)
:
>>> 'a' in ['a'] == True
False
>>> ('a' in ['a']) and (['a'] == True)
False
>>> ('a' in ['a']) == True
True
你永远不需要在if语句上测试True
:
if each not in a:
就够了。
答案 1 :(得分:2)
你应该能够说:
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
块永远不会执行。
答案 2 :(得分:1)
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
答案 3 :(得分:1)
最好看看B和A之间的区别
set(b).difference(set(a))
答案 4 :(得分:0)
您不需要== True。只是: 如果每个人都不在:
答案 5 :(得分:0)
使用sets:
非常简单a = [1]
b = [1, 2]
only_in_b = set(b) - set(a)
# set([2])
答案 6 :(得分:0)
另一种方式:
for bb in b:
try:
a.index(bb)
except:
print 'value is not in the list: ' + str(bb)
答案 7 :(得分:0)
我想补充一点,如果这两个列表很大。这不是最好的方法。你的算法是O(n ^ 2)。最好的方法是遍历a,将元素添加为字典的键。然后,遍历第二个列表,检查元素是否已经在字典中,这是一个O(n)算法。