使用python检查列表中是否存在元素

时间:2012-09-17 17:24:37

标签: python

我是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")

8 个答案:

答案 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)算法。