我可以在Python any()语句中保留任何变量吗?

时间:2014-03-14 14:35:31

标签: python variables if-statement any

给出以下if语句:

if any(predicate(y) for y in range(0,len(myList))):

我试图保留'y'变量用于后续操作,如下所示:

if any(predicate(y) for y in range(0,len(myList))):
    #DO STUFF WITH myList[y]

不幸的是,这会导致以下错误:

NameError: global name 'y' is not defined

没有尝试使用多个嵌套循环复制any()功能,我想不出一种方法来保持'y'变量并且无法找到与此站点密切相关的任何内容。这甚至可能吗?

2 个答案:

答案 0 :(得分:4)

我这样写:

for y, myItem in enumerate(myList):
    if predicate(y):
        #DO STUFF WITH myList[y]
        break

答案 1 :(得分:2)

如果要保留项目,请使用略有不同的逻辑:

 predRange = [x for x in range(0,len(myList)) if predicate(x)]
 if len(predRange) > 0:
   #hey look, it's already persisted in predRange!