首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取python列表中具有不同值的元素的随机位置?

如何获取python列表中具有不同值的元素的随机位置?
EN

Stack Overflow用户
提问于 2021-05-12 07:51:28
回答 4查看 63关注 0票数 0

假设有一个python列表,例如:l = [1,1,1,2,2,3,3,3,4,4](不一定对列表进行排序)。

我想在列表中随机选择n不同元素的位置。

例如,假设n=3,所以我想选择列表中三个不同元素的位置。

一种解决方案是:位置0,4,8分别对应于三个不同的元素值1,2,4。

在Python中执行此操作的最有效方法是什么?

EN

回答 4

Stack Overflow用户

发布于 2021-05-12 07:55:55

一种方法是打乱列表,并将值按顺序排列。

代码语言:javascript
复制
import random

l = [1,1,1,2,2,3,3,3,4,4]
random.shuffle(l)


n = 3
arr = []
for i in range(n):
    arr.append(i)
票数 0
EN

Stack Overflow用户

发布于 2021-05-12 08:02:57

您想要列表中的随机索引吗?在一定范围内使用sample方法。

代码语言:javascript
复制
import random

l = [1,1,1,2,2,3,3,3,4,4]
n = 3

random.sample(range(len(l)), n)
票数 0
EN

Stack Overflow用户

发布于 2021-05-12 08:05:27

您可以创建一个value : indices字典,其中value是列表l中的唯一值,indiceslvalue的索引列表。然后,您可以从n随机选择的唯一值的每个valueindices列表中获取随机索引:

代码语言:javascript
复制
from collections import defaultdict
from random import sample, choice

index_map = defaultdict(list)

for i, v in enumerate(l):
    index_map[v].append(i)

n = 3

# choose `n` random unique values from `l`
rand_values = sample(list(index_map), n)

# choose a random index of each of the `n` random values
rand_indices = [choice(index_map[v]) for v in rand_values]

print(rand_indices)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67495678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档