将插入物品的索引保留



我使用的是双配置模块在插入数字时将列表进行排序。可以说,我将以此顺序插入三个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>

最新更新