gpt4 book ai didi

python 根据条件重置列表的枚举索引

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:43 24 4
gpt4 key购买 nike

我想遍历 list1 并将递增的值附加到 list2,直到它达到 list1 中的值,其中 value != 0 然后递增的值重置回 0并再次从 0 开始枚举。

我尝试了以下方法:

list1 = [0,0,0,25,0,0,0,20,0,0]
list2 = []

for i,v in enumerate(list1):
if v == 0:
list2.append(i+1)
else:
list2.append(0)

但这会返回:

list2 = [1,2,3,0,5,6,7,0,9,10]

期望的输出:

list2 = [1,2,3,0,1,2,3,0,1,2]

最佳答案

forenumerate(..) 的问题在于 for 不关心像 这样的变量设置循环中的 i:如果开始新的迭代,则会从提供给 for 的迭代器中获取 i。所以即使你设置了i,它对下一次迭代也没有影响。

因此,诀窍是在循环之外定义 i 并自己更新它(增加它,或者在 v != 0 时重置它):

list1 = [0,0,0,25,0,0,0,20,0,0]
list2 = []

<b>i = 0</b>
for <b>v</b> in <b>list1</b>:
<b>i += 1</b>
<b>if v != 0:</b>
<b>i = 0</b>
<b>list2.append(i)</b>

关于python 根据条件重置列表的枚举索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42463846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com