在添加或删除新值时,在Python中重新排列列表

在添加或删除新值时,在Python中重新排列列表,python,sorting,Python,Sorting,我想知道是否有一种有效的方法来对数字列表进行排序,而不重复其中任何一个,并且通过修改任何元素,其余的都会重新排序 e、 g list=[1,2,3,4] 案例1:如果我向列表中添加另一个数字2,则列表中的数字2和下一个数字应被推送到下一个值。 [1,2,3,4]像移动/推送数字一样,“旧”2应转换为3,“旧”应转换为4 对sumary来说,插入一个数字的一些有效方法,这个数字将占据其值的位置,将另一个值向后或向前移动 我希望这是清楚的 编辑以澄清 这些数字与某些事情有关。本例中的产品,但现在无关

我想知道是否有一种有效的方法来对数字列表进行排序,而不重复其中任何一个,并且通过修改任何元素,其余的都会重新排序

e、 g

list=[1,2,3,4]

案例1:如果我向列表中添加另一个数字2,则列表中的数字2和下一个数字应被推送到下一个值。
[1,2,3,4]像移动/推送数字一样,“旧”2应转换为3,“旧”应转换为4

对sumary来说,插入一个数字的一些有效方法,这个数字将占据其值的位置,将另一个值向后或向前移动

我希望这是清楚的

编辑以澄清

这些数字与某些事情有关。本例中的产品,但现在无关紧要。 因此:

product1:具有此值1 produc1{id:1}
product2:此值为2 produc2{id:2}
product3:此值为3 produc3{id:3}
product4:此值为4 produc4{id:4}
所以,如果我想更改订单,我想将例如product4修改为produc的2位置

product1:具有此值1 produc1{id:1}
product2:此值为2 produc2{id:2}
product3:此值为3 produc3{id:3}
product4:将此值设为4 produc4{id:4}#我将此4更改为2
然后它应该按id排序

product1:具有此值1 produc1{id:1}
product4:将此值设为2 produc4{id:2}#这是一个4修改为2(手动)
product2:将此值设为3 produc2{id:3}#这是一个2转换为3的值
product3:将此值设为4 produc3{id:4}#这是一个3转换为4的值
另一个案例

product1:具有此值1 produc1{id:1}
product2:将此值设为2 produc2{id:2}#删除此product2
product3:此值为3 produc3{id:3}
product4:此值为4 produc4{id:4}
然后:

product1:具有此值1 produc1{id:1}
product2:此值为2 produc3{id:2}#此id为3
product3:此值为3 produc4{id:3}#此id为4
关于得到一个索引号,我会以某种方式阻止它,但现在对此不感兴趣

我希望这一点现在已经清楚了。

见下文-使用


如果将非顺序值添加到您的
列表中
,您希望的行为是什么?e、 g.如果您想将值
7
添加到
[1,2,3,4]
。您的期望值并不完全清楚,您能否简单地显示实际的预期输出,而不混淆
(“旧”…)
注释?听起来你总是想要一个1到n的列表?如果您有一个
[1,2,3,4]
列表,那么无论您插入什么,您都会得到
[1,2,3,4,5]
?这与仅仅拥有一个变量
n=5有什么不同?我只是在读:你总是想要一个从1到n的列表。比如…你的“我把这个4改成了2”的例子中发生了什么变化?没有什么这是一份产品清单。如果列表中有一组对象,为什么不简单地使用列表索引作为数字id,或者尝试执行任何操作呢?这会重复
3
import bisect 
lst = [1, 2, 3, 4]
bisect.insort(lst, 3) 
print(lst)