【发布时间】:2019-10-02 16:42:39
【问题描述】:
我必须获取一个诸如 [2,2,0,2] 之类的列表,然后我需要为列表中不为 0 的元素返回一个新的索引列表,因此对于 [2, 2,0,2] 我需要返回 [0,1,3]。或者对于 [1,0,1,1] 我需要返回 [0,2,3]。
def test(B):
for k in list(B):
if k > 0:
result = []
for i in range(len(B)):
result.append(i)
return result
test([2,2,0,2])
->[0,1,2,3]
我的问题是所有索引都被返回,我试图解决这个问题但没有运气。如果有人可以帮助我,那就太好了,谢谢。
【问题讨论】:
-
为什么要嵌套另一个 for 循环?这绝对没有必要。无论如何,该内部循环只是将列表复制到
result,因此result将始终是原始列表,(除非所有数字都小于或等于0,在这种情况下它将产生NameError)。如果你使用enumerate,你会让你的生活更轻松。