This post让我到达我想去的地方的一半。我想知道以下代码找到了哪个字符串,但在我的机器上它不起作用:
a = ['a', 'b', 'c']
str = "a123"
if any(x in str for x in a):
print x
这会产生错误:“NameError: name 'x' is not defined”。如何确定找到了哪个字符串(在 a 中)?换句话说,根据在列表中找到的字符串,我想在后面的代码中做一些特定的事情,因此我需要知道当条件为真时 x 是什么。我正在使用 python 3.5.0
请您参考如下方法:
变量x 指的是generator 的范围传给了any()函数,因此您不能在此生成器之外print x。
any() 只返回 True 或 False。
相反,您可以使用 next() :
print next(x for x in a if x in str)
并在找不到正确值的情况下添加默认值:
s = next((x for x in a if x in str), None)
if s:
print s
请注意:您不应该创建名为 str 的变量,因为 there is a built-in同名。覆盖它被认为是不好的做法,因为这会导致混淆。
