我使用的是双配置模块在插入数字时将列表进行排序。可以说,我将以此顺序插入三个9, 2, 5
。但是,此列表的最后一个状态显然是[2, 5, 9]
,但是,我是否可以找到将数字插入此列表的索引列表。对于此列表,将是[1, 2, 0]
。因此,我需要的列表是索引[0,1,2]发生在排序发生的情况下,每次插入都会发生,这就是为什么我找不到方法。我可以使用sorted
功能的key
功能对其进行排序,但是我不想增加复杂性。所以我的问题是可以通过双配置模块实现的?
这是我使用的代码
import bisect
lst = []
bisect.insort(lst, 9)
bisect.insort(lst, 2)
bisect.insort(lst, 5)
print lst
编辑:另一个示例是,我要将数字4、7、1、2、9插入一些空列表。(让我们首先在没有二分位的情况下假设我已经有列表中的数字)
[4, 7, 1, 2, 9]
# indexes [0, 1, 2, 3, 4], typical enumeration
排序后,
[1, 2, 4, 7, 9]
# now the index list [2, 3, 0, 1, 4]
可以用一分分完成而不会增加复杂性。
注意:插入的顺序不是任意的。众所周知,这就是为什么我尝试将索引与一分为二。
insort
不知道插入项目的顺序。您必须自己添加该逻辑。这样做的一种方法可能是插入由值和索引组成的2个小组:
bisect.insort(lst, (9, 0))
bisect.insort(lst, (2, 1))
bisect.insort(lst, (5, 2))
您需要在添加对象时自己跟踪索引,但是由于第一个项目首先对序列进行排序,然后在下一个项目等。这仍然可以正确地排序而无需任何额外的努力。<<<<<<<<<<<<<<<</p>