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

Python 检查值是否在多个列表中,python,Python,任务:检查“值”是否在列表_1和列表_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 它以我所期望的方式工作。我已经看到了这样的解决方案——它是有效的,但我还有一点误解的余地,这就是为什么我要问 (1) 找不到文档,描述“and”运算符(应该)的工作方式, 用于列

任务:检查“值”是否在列表_1和列表_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
它以我所期望的方式工作。我已经看到了这样的解决方案——它是有效的,但我还有一点误解的余地,这就是为什么我要问

(1) 找不到文档,描述“and”运算符(应该)的工作方式, 用于列表、dicts、元组等

(2) 为什么下面的代码返回“False”

(3) 为什么返回['5'、'7'、'4']

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


我相信pythondocs网站上有一些文档,可以启发上面的问题。可以花一些时间学习python 3源代码以查看实现细节,但我想知道在python 3实现时使用的一些语言标准(如ECMAScript),您对第一个代码片段的直觉是错误的
返回其第二个运算符(如果两者都是truthy),因此在此返回第二个列表;因此,您的语句实际上相当于列表2中的
'5',这恰好是真的

第二个是错误的,因为元组现在实际上是
(['3','5'],['5','7','4'])
-即两个元素的元组,这两个元素都是列表<
中的code>将检查元组中是否有任何成员是字符串“5”,但它们都不是


另外两个答案与运算符优先级有关;第三个等价于
('5'在列表_1中)和列表_2
,后者返回如上所述的列表_2;第三个相当于
((列表1中的'5',列表2)

你对第一个片段的直觉是错误的
返回其第二个运算符(如果两者都是truthy),因此在此返回第二个列表;因此,您的语句实际上相当于列表2中的
'5',这恰好是真的

第二个是错误的,因为元组现在实际上是
(['3','5'],['5','7','4'])
-即两个元素的元组,这两个元素都是列表<
中的code>将检查元组中是否有任何成员是字符串“5”,但它们都不是


另外两个答案与运算符优先级有关;第三个等价于
('5'在列表_1中)和列表_2
,后者返回如上所述的列表_2;第三个相当于
((列表1中的'5',列表2)

True,[5,7,4]
返回
[5,7,4]
,所以这是最后一个而不是第一个(但它仍然有效,因为两个列表中都有5个)抱歉,我写错了;更新。可能是元,但是:使用行话“truthy”的答案是否应该澄清它的意思是
bool(thing)
计算为
True
?或者这是一个比Python更广泛使用的术语,我们希望初学者知道吗?@DanielRoseman感谢您的解释-这是一个有用的、快速回答的
True,[5,7,4]
返回
[5,7,4]
,所以这是最后一个,不是第一个(但它仍然有效,因为两个列表中都有5个)。对不起,我写错了;更新。可能是元,但是:使用行话“truthy”的答案是否应该澄清它的意思是
bool(thing)
计算为
True
?或者,这是一个比Python用途更广泛的术语,我们希望初学者知道吗?@DanielRoseman感谢您的解释-它很有帮助,回答也很快。您可以使用Python集合类型的交集方法来完成此任务。至于Python的
&
运算符做了什么,请看一看。@PM 2Ring,谢谢您的评论-这很有用+使用集合也可以解决该任务:'5'在集合中(p1.extend(p2)),您可以使用Python集合类型的交集方法来完成该任务。至于Python的
&
运算符做了什么,请看一看。@PM 2Ring,谢谢您的评论-这很有用+使用集合也可以解决该任务:集合中的“5”(p1.extend(p2))
list_1 = ['3', '5']
list_2 = ['5', '7', '4']
r = '5' in (list_1, list_2) # Tuple?
print(r) #False
list_1 = ['3', '5']
list_2 = ['5', '7', '4']
r = '5' in list_1 and list_2
print(r) # ['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'])