【发布时间】:2015-12-11 09:08:22
【问题描述】:
我对 python 有疑问。
我列了一个简单的清单:
>>> my_list = ["one","two","three"]
我想创建一个“单行代码”来查找字符串。
例如,我有这个代码:
>>> [(i) for i in my_list if i=="two"]
['two']
但是当我看到变量是错误的(我找到了我列表的最后一个值):
>>> print i
three
为什么我的变量包含最后一个元素而不是我要查找的元素?
【问题讨论】:
-
如果您想查找符合某些条件的项目列表,请使用
[i for i in my_list if ...]。如果您想找到符合某些条件的项目,请考虑使用next;例如x = next(i for i in my_list if ...) -
i 将不包含该值,它仍被分配了所有值。结果将只包含符合条件的值。
-
你没有错,你的解释器也没有错,只是循环直到最后一个值,即使条件不满足,所以你得到“三”以避免你可以做什么@khelwood 说
-
为什么不使用
"two" in mylist(返回布尔值)或mylist.index("two")(返回找到的字符串的位置)?既然你已经有了你要找的字符串,再让它被搜索返回是没有意义的,不是吗?
标签: python python-2.7 for-loop if-statement list-comprehension