繁体   English   中英

Python按列表顺序插入数字

[英]Python insert number in list sequence

我试图将一个数字插入一个数字序列的列表中,由于某种原因,这个小程序只是坐在那里消耗了CPU的力量...不知道为什么它不起作用:

number = 5
lst = [4,5,6]
if all(x > number for x in lst):
    lst.insert(0,number)
elif all(x < number for x in lst):
    lst.append(number)
else:
    for i,v in enumerate(lst):
        if v>number:
            lst.insert(i-1,number)
print (lst)

预期输出:

lst = [4,5,5,6]

您的for循环将5插入理论上的列表中间无数次(或者直到您用尽列表消耗的有限资源,以先发生的为准)。

1) for i,v in enumerate(lst):
2)    if v>number:
3)       lst.insert(i-1,number)

在第一遍中,第1行以v = 4和i = 0开始循环。第2行发现v不大于数字。

在第二遍中,第1行继续循环,其中v = 5并且i =1。第2行也是false。

第三遍,第1行:v = 6,i =2。第2行找到一个正确的语句,然后移至第3行。第3行将数字引用的对象插入到位置i-1,将5插入到列表的位置1。

此时列表为:

lst = [4, *5*, **5**, 6]

斜体5是您添加到列表中的数字。 粗体的5是当前指针的位置,i =2。请注意,刚才检查的6随插入一起向前移动。

第四遍:v = 6,i =3。第2行找到一个正确的语句,然后移至第3行。第3行将数字引用的对象插入位置i-1,将5插入列表的位置2。

此时列表为:

lst = [4, 5, *5*, **5**, 6]

等等等等

快速修复:

for i, v in enumerate(lst):
    if v > number:
        lst.insert(i-1, number)
        **break**

您只是要检查并添加一个数字,因此插入后请跳出循环,因为这样做已经完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM