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

时间:2018-02-11 00:19:56

标签: python for-loop if-statement any

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

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

1 个答案:

答案 0 :(得分:9)

你没有。如果要枚举所有匹配项,请不要使用list2 <- list1[lapply(list1, length) > 0] list2 [[1]] [1] "a" "b" [[2]] [1] "c" "d" "e" 。名称any()仅存在于传递给item的生成器表达式的范围内,您从函数返回的所有内容都是any()True。匹配的项目不再可用。

直接循环遍历列表并在False测试中对每个测试进行测试:

if

或使用列表理解,将其传递给for item in lst: if ".git" in item: print item, (这是faster than a generator expression in this specific case):

str.join()

或者,使用Python 3语法:

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

如果您只想找到第一个这样的匹配,可以使用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()