我必须获取一个列表,例如 [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]
我的问题是所有的索引都被返回了,我试图解决这个问题但没有成功。如果有人能帮助我,那就太好了,谢谢。
请您参考如下方法:
您可以使用 enumerate巧妙地实现这一目标:
def legal(B):
return [i for i, x in enumerate(B) if x]
# or if you want to cover more than numbers
# return [i for i, x in enumerate(B) if x != 0]
>>> legal([2,2,0,2])
[0, 1, 3]
>>> legal([1,0,1,1])
[0, 2, 3]
