gpt4 book ai didi

python - 在按升序排序的整数列表中添加缺失的数字

转载 作者:行者123 更新时间:2023-12-05 08:49:40 26 4
gpt4 key购买 nike

我正在尝试实现一个函数,该函数会在列表中插入任何缺失的数字。列表按升序排列,无重复元素。

到目前为止,这是我的代码:

def fill_in_numbers(lst):
i=0
while True:
if lst[-1] - lst[i] !=1:
lst.insert(i+1, lst[i]+1)
i+=1
if lst[-1] - lst[i]== 1:
break
return lst

因此,例如,如果输入是 fill_in_numbers([12,15,19]),则预期输出是 [12,13,14,15,16,17,18 ,19],或者如果输入是 fill_in_numbers([-5,0,5]) 预期输出是 [-5,-4,-3,-2 ,-1,0,1,2,3,4,5]

但是,当我运行我的代码时,第一个输入得到的输出是 [12,13,14,15,16,17,18,15,19],第二个输入是是 [-5,-4,-3,-2,-1,0,1,2,3,4,0,5]

我的代码有什么问题?

最佳答案

其他答案为您提供了解决方案,但没有解释为什么您的答案不起作用。您遇到的问题是每次循环(直到中断)时,您都会在列表中插入一个数字,而不检查该数字是否已经在列表中。这会导致所有其他不是末端的原始列表条目一直被推到列表的末尾。

如果你想使用你的原始代码,那么修复应该只是在第一个条件下:

def fill_in_numbers(lst):
i=0
while True:
if lst[i+1] != lst[i] + 1:
lst.insert(i+1, lst[i]+1)
i+=1
if lst[-1] - lst[i]== 1:
break
return lst

如果下一个 lst 元素确实是序列号,则不执行第一个 if 语句的主体,并且递增“i”迭代器,允许下一个循环在条件中使用这个原始数字而不是一个不必要的重复。

这不是最干净的 python 代码,但对于刚开始的人来说还不错 :)

关于python - 在按升序排序的整数列表中添加缺失的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63560108/

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