Skip to main content
 首页 » 编程设计

python之如果有(x in str for x in a): what's x when true

2025年05月04日9TianFang

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同名。覆盖它被认为是不好的做法,因为这会导致混淆。