目的: 有一列从小到大排好的数字元素列表, 现在想往其插入一个值,要求: 大于右边数字小于左边数字 列表元素: [1,4,6,13,16,19,28,40,100] # 方法: 往列表中添加一个数值,其目的方便元素位置往后移动一位, 因为如果我们找到了合适的位置,目前这个位置有元素在占着,我们需要将其适合位置后的每一个元素,往后挪动一位,如果不在最后添加一个元素,而且这个元素必须是 0 ,会发生栈缺失值的现象 其实我们就是做了 a[i] = a[i-1] 元素100 消失了 执行 a[i] = a[i-1] 如果我们执行了从后往前迭代,a【9】 = a[8] 40 覆盖了100
a = [1,4,6,13,16,19,28,40,100,0]
print("befor:")
for i in range(0,len(a) - 1): print(a[i],end="\t")
print()
number = int(input("请输入你想要插入的数:"))
local = 0
for i in range(len(a)-2,-1,-1): # 第二个-1 指的是步长为1不过是从右往左取
if number > a[i]:
local = i+1 # local 就是我们的插入点
break
# 移动位置
for i in range(len(a)-1,local,-1): # local-1 是因为 range() 函数总是左闭右开
# 如果写成local 只会取到 插入紧跟后面的一个数,本来插入点在6后面,因为range() 函数的原因就
# 会将插入点选到了13后面
a[i] = a[i-1] # 从插入点每一个数都向后移动了1位, i 最后存在的位置只能是插入点
a[local] = number # local 是我们的插入点 没执行这条语句之前 a[local] = a[local-1], 现在将插入的值赋到 替换点
print(a)
学习资料: 转载: 【三天练完!学习Python必刷的100道经典实战练习真题,没练等于白学!!!】 https://www.bilibili.com/video/BV1SG411H7e1/?p=36&share_source=copy_web&vd_source=d0ef3d08fdeef1740bab49cdb3e96467