【发布时间】:2020-09-29 23:25:40
【问题描述】:
我有一个数字列表。假设它是在 40 范围内随机选择的数字。
我有一个 for 循环,它在每次迭代中选择一个索引。在循环中完成一轮后,我将我选择的索引保存在一个列表中,然后将其从原始列表中删除(因此每次迭代后,都会从原始列表中删除一个元素)。
perm = random.sample(range(1, 40), 30)
for i in range(7):
index = random.randrange(len(perm))
perm.pop(index)
最后,我有一个索引列表,显示了我在每次迭代中删除的索引的编号,例如l = [5, 15, 6, 7, 11, 3, 8]。有没有一种简单的方法可以获取这些索引的原始位置? (例如我先删除了5,所以当我选择15时它实际上在原始数组中的第16位,我想找到所有索引的原始位置)
我尝试了类似这样的简单方法:
for i in range(len(l)):
for j in range(i):
if l[i] >= l[j]:
l[i] += 1
但这似乎不太对劲。关于如何使其仅使用一个循环的任何想法?
【问题讨论】:
-
您需要保留一份原始列表的副本以及您要从列表中删除的值的列表。
-
@Carcigenicate 这是我正在处理的一个更大问题的子问题,为此,我需要在每次迭代后删除我选择的索引。
-
@pavel 我需要索引,并且我的原始问题中可能存在重复值。所以,很遗憾我做不到。