【发布时间】:2021-12-19 20:11:49
【问题描述】:
我有这个代码:
x = ["Hello", "World"]
y = ["Hi", "Guys"]
z = [x, y]
以下行将返回 False:
"Hello" in z
但我需要一种方法让它返回是。我需要一种方法来控制对象是否在 z 中包含的列表之一中。唯一的方法是 for 循环?
【问题讨论】:
标签: python
我有这个代码:
x = ["Hello", "World"]
y = ["Hi", "Guys"]
z = [x, y]
以下行将返回 False:
"Hello" in z
但我需要一种方法让它返回是。我需要一种方法来控制对象是否在 z 中包含的列表之一中。唯一的方法是 for 循环?
【问题讨论】:
标签: python
你确实需要某种循环,是的,因为"Hello" 确实不在z 中——它在x 中,而在z 中:
>>> x = ["Hello", "World"]
>>> y = ["Hi", "Guys"]
>>> z = [x, y]
>>> "Hello" in x
True
>>> x in z
True
>>> any("Hello" in a for a in z)
True
在上面的表达式中,a 迭代 x 和 y,我们检查 any 中的 a 是否满足 "Hello" in a。
这是一种相似但不同的方法,它在使用 in 之前将 z 展平(使用嵌套的 for 循环):
>>> [b for a in z for b in a]
['Hello', 'World', 'Hi', 'Guys']
>>> "Hello" in (b for a in z for b in a)
True
和以前一样,a 迭代 z 中的每个列表,现在在该迭代中,我们有 b 迭代每个 a 中的每个字符串,这会生成包含所有四个字符串的单个迭代;然后我们可以使用"Hello" in (那个可迭代的)并得到想要的结果。
【讨论】: