[英]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.