gpt4 book ai didi

python - 无法在 for 循环中重置计数器

转载 作者:太空宇宙 更新时间:2023-11-04 09:26:54 25 4
gpt4 key购买 nike

我正在尝试以每 2 个重复整数乘以 2 并替换重复整数的方式修改整数列表。这是一个例子: a = [1, 1, 2, 3] = [2, 2 ,3] = [4 ,3]
也 : b = [2, 3, 3, 6 ,9] = [2, 6, 6, 9] = [2, 12, 9]

我正在使用下面的代码来实现这一点。不幸的是,每次我找到一个匹配项时,我的索引都会跳过下一个匹配项。

user_input = [int(a) for a in input().split()]

for index, item in enumerate(user_input):
while len(user_input)-2 >= index:
if item == user_input[index + 1]:
del user_input[index]
del user_input[index]
item += item
user_input.insert(index,item)
break

print(*user_input)

最佳答案

在 Python 中,您永远不应该在迭代容器对象时修改它。如果您知道自己在做什么,则有一些异常(exception),但您当然不应该更改容器对象的大小。这就是您想要做的,这就是它失败的原因。

相反,使用不同的方法。遍历列表但构造一个新列表。根据需要修改该新列表。这是执行您想要的操作的代码。这将构建一个名为 new_list 的新列表,并更改该列表中的最后一项或附加一个新项目。原始列表永远不会改变。

user_input = [int(a) for a in input().split()]

new_list = []
for item in user_input:
while new_list and (item == new_list[-1]):
new_list.pop()
item *= 2
new_list.append(item)

print(*new_list)

此代码通过了您提供的两个示例。它还传递了示例 [8, 4, 2, 1, 1, 7],结果应该是 [16, 7]。我以前的版本没有通过最后的测试,但这个新版本通过了。

关于python - 无法在 for 循环中重置计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57232577/

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