我对 python 有疑问。
我列一个简单的清单:
>>> my_list = ["one","two","three"]
我想创建一个“单行代码”来查找字符串。
例如,我有这段代码:
>>> [(i) for i in my_list if i=="two"]
['two']
但是当我看到变量错误时(我找到了列表的最后一个值):
>>> print i
three
为什么我的变量包含最后一个元素而不是我要查找的元素?
原文由 rostonik 发布,翻译遵循 CC BY-SA 4.0 许可协议
您正在使用列表理解生成 _过滤列表_。
i
仍然绑定到该列表的每个元素,最后一个元素仍然是'three'
,即使它随后被从正在生成的列表中过滤掉。您不应该使用列表理解来挑选一个元素。只需使用
for
循环和break
结束它:如果你 必须 有一个单行代码(这与 Python 的理念背道而驰,其中 _可读性很重要_),请使用
next()
函数 和生成器表达式:如果没有这样的匹配元素,它将设置
i
为None
。以上不是有用的过滤器;您实际上是在测试值
'two'
是否在列表中。您可以为此使用in
: