如何在python中搜索列表中的项目

时间:2016-05-28 05:06:22

标签: python list python-3.x variables if-statement

基本上我有两个项目列表,我想检查第二个列表中的项目是否在第一个列表中。然后,如果该项目在第一个列表中,我想为变量赋值,如果它不在该列表中,我想为同一个变量分配不同的值。 (如下) 可以这样做吗?

list1 = ['dog','cat','mouse']

list2 = ['dog','tutle','bird']

if list2 in list1:
    square = 77
else:
    square = 55

print(square)

2 个答案:

答案 0 :(得分:0)

使用set operations

if not set(list1).isdisjoint(list2):

如果它们没有共同的元素,则两组是不相交的。

或者使用any() functiongenerator expression来依次测试list2中的每个值:

if any(value in list1 for value in list2):
    square = 77
else:
    square = 55

甚至:

square = 77 if any(value in list1 for value in list2) else 55

如果value in list1是一组,那么list1测试会更有效率。

答案 1 :(得分:-1)

回答你问的问题:

list1 = ['dog','cat','mouse']
list2 = ['dog','tutle','bird']
for elem in list2:
    if elem in list1:
        square = 77
    else:
        square = 55
    print(elem, "square=", square)

但搜索列表需要花费大量时间。您可以通过一组来获得一些加速:

set1 = set(list1)
for elem in list2:
    if elem in set1:
        square = 77
    else:
        square = 55
    print(elem, "square=", square)

请注意,上面的代码在list2中搜索list2中的每个值。如果你想查看list1中是否存在list2中的任何值,那么应该这样做:

set1 = set(list1)
set2 = set(list2)
if set1.intersection(set2):
    square = 77
else:
    square = 55