繁体   English   中英

Python:如何使用(列表中项目的项目中为“str”)?

[英]Python: How to use if any(“str” in item for item in list)?

下面的代码段返回一个错误,即未定义全局名称“item”。 如果在列表中找到,如何正确搜索和打印字符串,如何使用(...)?

def walk:
    list = ["abc", "some-dir", "another-dir", ".git", "some-other-dir"]
    if any (".git" in item for item in list):
        print item,

你没有。 如果要枚举所有匹配项,请不要使用any() 名称item仅存在于传递给any()的生成器表达式的范围内,您从函数返回的所有内容都是TrueFalse 匹配的项目不再可用。

只需直接遍历列表并在if测试中测试每个:

for item in lst:
    if ".git" in item:
        print item,

或使用列表str.join() ,将其传递给str.join()在这种特定情况下,这比生成器表达式更快 ):

print ' '.join([item for item in list if ".git" in item])

或者,使用Python 3语法:

from __future__ import print_function

print(*(item for item in list if ".git" in item))

如果你想找到第一个这样的匹配,你可以使用next()

first_match = next(item for item in list if ".git" in item)

注意,如果没有这样的匹配,这会引发StopIteration ,除非你给next()一个默认值:

first_match = next((item for item in list if ".git" in item), None)
if first_match is not None:
    print first_match,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM