使用python中的any()方法返回条件为true时的列表索引

使用python中的any()方法返回条件为true时的列表索引,python,python-3.x,list,Python,Python 3.x,List,上面的代码表明了我想要做什么 在any()方法中返回true的lst的i的索引是否可能获得,而不使用显式for循环lst,如果是这样的话,如何获得?您只是混淆了下标变量的范围。使用索引方法尝试更直接的方法: a = [['df','37s',''],['4d','34','jd']] for lst in a: if any(i=='' for i in lst): print(lst.index(i)) # NameError: name 'i' is not defi

上面的代码表明了我想要做什么


any()
方法中返回true的
lst
i
的索引是否可能获得,而不使用显式for循环
lst
,如果是这样的话,如何获得?

您只是混淆了下标变量的范围。使用
索引
方法尝试更直接的方法:

a = [['df','37s',''],['4d','34','jd']]
for lst in a:
    if any(i=='' for i in lst):
        print(lst.index(i)) # NameError: name 'i' is not defined
输出:

a = [['df','37s',''],['4d','34','jd']]
target = ''
for lst in a:
    if target in lst:
       print(lst.index(target))
print([pos for pos, lst in enumerate(a) if target in lst])

现在您已经更改了问题描述(请注意,示例输出确实有帮助),请尝试以下列表:

2
输出:

a = [['df','37s',''],['4d','34','jd']]
target = ''
for lst in a:
    if target in lst:
       print(lst.index(target))
print([pos for pos, lst in enumerate(a) if target in lst])
这表示[0]是唯一包含空字符串的元素

如果我将输入测试扩展到

[0]
输出是

a = [['df','37s',''],
     ['4d','34','jd'],
     ['one','','more', 'try']]

严格回答最初的问题:是否可以在any()中获得返回true的指示符,而无需显式地指定for。 嗯,这是可能的。但这并不意味着你应该这么做。请不要在生产中使用此代码,它依赖于Cpython实现细节。用普伦姆的答案代替

[0, 2]

没有必要避免显式地重复您的列表,因为
any
。他想要的是
lst
中的target索引,而不是
a
中的索引。他的评论要求的是lst的
索引i,这并不完全清楚。这就是为什么我把我的解决方案分成不同的答案。我希望OP能通过选择一个发布的解决方案来澄清问题;我将删除与已接受答案不匹配的答案。哦。。。有人认为这很有用。好的,我会留下这个答案作为例证,但请注意,它并不能解决海报的问题陈述。我不知道两个答案都是同一个人写的。