Dev*_*evi 6 python random indexing list
我有一个包含许多列表的文件。我想访问从每个列表中检索到的值的索引。我使用随机函数,如下所示。它可以很好地检索值,但我需要获取所获得值的索引。
for i in range(M):
           print(krr[i])
           print(krr[i].index(random.sample(krr[i],2)))
           nrr[i]=random.sample(krr[i],2)
           outf13.write(str(nrr[i]))
           outf13.write("\n")
我ValueError说检索到的两个值不在列表中,即使它们存在......
要检索列表中随机选择的值的索引,您可以使用enumerate它将索引和可迭代的值作为元组返回:
import random
l = range(10) # example list
random.shuffle(l) # we shuffle the list
print(l) # outputs [4, 1, 5, 0, 6, 7, 9, 2, 8, 3]
index_value = random.sample(list(enumerate(l)), 2)
print(index_value) # outputs [(4, 6), (6, 9)]
这里选择了第四个值6和第六个值9- 当然每次运行都会返回不同的东西。
另外,在您的代码中,您将打印 的第一个样本krr[i],然后在下一行再次对其进行采样,并将其分配给nrr[i]。这两个调用将产生不同的样本,并可能导致您的IndexError.
OP评论后编辑
将值与索引分开的最明确的方法是:
indexes = []
values = []
for idx, val in index_value:
    indexes.append(idx)
    values.append(val)
print indexes # [4, 6]
print values # [6, 9]
请注意,indexes和 的values顺序与 相同index_value。