检查某个值是否在多个列表中

时间:2016-09-05 13:01:36

标签: python

任务:检查'value'是否在list_1 AND list_2

以下方法 - 是2分钟直观播放的结果

list_1 = ['3', '5']
list_2 = ['5', '7', '4']
r = '5' in (list_1 and list_2) # 'and' gets an intersection
print(r) #True

它以我期望的方式工作。我已经看过像that这样的解决方案了 - 它有效,但我的误会还有一点空间,这就是我问的原因

(1)找不到文档,描述'和'运算符(应该)如何工作, 列表,dicts,元组等。

(2)为什么以下代码返回'False'

list_1 = ['3', '5']
list_2 = ['5', '7', '4']
r = '5' in (list_1, list_2) # Tuple?
print(r) #False

(3)为什么它会返回 ['5','7','4']

list_1 = ['3', '5']
list_2 = ['5', '7', '4']
r = '5' in list_1 and list_2
print(r) # ['5', '7', '4']

(4)为什么它返回(True,['5','7','4'])

list_1 = ['3', '5']
list_2 = ['5', '7', '4']
r = '5' in list_1, list_2
print(r) # (True, ['5', '7', '4'])

我相信在python docs网站上有一些文档,它启发了上面的问题。有可能花一些时间学习python 3源代码来查看实现细节,但我想知道在Python 3实现时使用的一些语言标准(如ECMAScript)

1 个答案:

答案 0 :(得分:3)

你对第一个片段的直觉是错误的。 and如果两者都是真的,则返回其第二个运算符,因此它返回第二个列表;所以你的陈述实际上等同于'5' in list_2,恰好是真的。

第二个是假的,因为元组实际上现在是(['3', '5'], ['5', '7', '4']) - 即两个元素的元组,两个元素都是列表。 in将检查元组的任何成员是否为字符串'5',但它们都不是。

另外两个答案与运营商优先权有关;第三个相当于('5' in list_1) and list_2,它返回list_2,如上所述;第三个相当于(('5' in list_1), list_2)