"in" 运算符未按预期工作?(python)

"in" operator not working as expected?(python)

我在 python 学习运算符概念时是初学者。我被困。有人可以帮我吗??为什么 in 运算符不返回 true?

list1 = [1,2,3]
list2 = [1,2,3,4,5] 
print(list1 in list2)`

相反,它 returns 错误。

list1 = [1,2,3]
list2 = [1,2,3] 
print(list1 in list2)`

returns 两种情况都为假。

list1 in list2 不检查 list1 的每个元素是否包含在 list2 中;它检查 list1 本身 是否是 list2:

的元素
>>> [1, 2, 3] in [1, 2, 3]
False
>>> [1, 2, 3] in [[1, 2, 3]]
True

您可以使用 all 函数自动执行逐元素检查:

>>> all(x in list2 for x in list1)
True

正如 Chepner 所说,list1 in list2 检查 list1 是否在 list2 中。您可以做的是使用 for 循环检查 list1 中的每个元素是否在 list2 中:

for i in list1:
    if i in list2:
        print(i)

这将打印出在 list1list2 中找到的所有元素。

您还可以使用 sets,这是一个更快的答案。 首先把list1和list2做成一个集合:

set_list1 = set(list1)
set_list2 = set(list2)

你也可以不从列表开始写一个集合:

set_list1 = {1,2,3}
set_list2 = {3,4,5}

请注意,在集合中,您使用 {} 而不是 []

然后,您可以使用集合执行以下操作:

print(set_list1 | set_list2)  # Union - {1,2,3,4,5}
print(set_list1 & set_list2)  # Intersection - {3}
print(set_list1 - set_list2)  # Difference - {1,2}
print(set_list2 - set_list1)  # Difference - {4,5}
print(set_list1 ^ set_list2)  # Symmetric difference - {1,2,4,5}

希望对您有所帮助。