在 Python 中,要检查一个元素是否在两个列表中,我们会这样做
if elem in list1 and elem in list2:
我们可以为此做以下事情吗?
if elem in (list1 and list2):
原文由 Muhammad Waqar 发布,翻译遵循 CC BY-SA 4.0 许可协议
在 Python 中,要检查一个元素是否在两个列表中,我们会这样做
if elem in list1 and elem in list2:
我们可以为此做以下事情吗?
if elem in (list1 and list2):
原文由 Muhammad Waqar 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,声明
if elem in (list1 and list2):
不会为此特定目的工作。 Python 解释器所做的是首先检查 list1,如果发现空列表(即 - False
),它只返回空列表(为什么? - False
任何事情都会导致错误,那么,为什么要进一步检查?)如果不为空(即评估为 True
),它返回 list2
(为什么? - 如果第一个值为 True
表达式的结果取决于第二个值,如果它是 False
,表达式的计算结果为 False
,否则, True
)-, soa-aac7c1)变为 if elem in list1
或 if elem in list2
取决于您的实施。这称为短路。
有关短路的 Wiki 页面可能会有所帮助。
例子 -
>>> list1 = [1, 2]
>>> list2 = [3, 4]
>>> list1 and list2
[3, 4]
>>> list1 = []
>>> list2 = [3, 4]
>>> list1 and list2
[]
原文由 Sukrit Kalra 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5k 阅读✓ 已解决
2 回答1k 阅读✓ 已解决
4 回答937 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
你不能。
list1 and list2
表示“list1
如果它是空的,list2
否则”。因此,这不会检查您要检查的内容。在交互式解释器中试试看。
执行此操作的简单方法是您已有的代码:
它有效,易于阅读,而且写起来很明显。如果有一个明显的方法来做某事,Python 通常会尽量避免添加不会增加任何好处的同义词。 (“TOOWTDI”,或“应该有一种——最好只有一种——显而易见的方法来做到这一点。”)
如果您正在寻找在某种特定方面 更好 的答案,而不仅仅是 不同 的,那么根据您的需要有不同的选择。
例如,如果您要经常进行此检查:
现在你可以这样做:
这更简单,也更快。