首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中从列表中选择"x“个数的唯一数字?

如何在Python中从列表中选择"x“个数的唯一数字?
EN

Stack Overflow用户
提问于 2011-06-27 22:32:54
回答 5查看 57.5K关注 0票数 79

我需要从列表中挑选出"x“个不重复的随机数。例如:

代码语言:javascript
复制
all_data = [1, 2, 2, 3, 4, 5, 6, 7, 8, 8, 9, 10, 11, 11, 12, 13, 14, 15, 15]

如何选择像[2, 11, 15]而不是[3, 8, 8]这样的列表

EN

回答 5

Stack Overflow用户

发布于 2011-06-27 22:35:17

如下所示:

代码语言:javascript
复制
all_data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
from random import shuffle
shuffle(all_data)
res = all_data[:3]# or any other number of items

或者:

代码语言:javascript
复制
from random import sample
number_of_items = 4
sample(all_data, number_of_items)

如果all_data可能包含重复条目,请先修改代码以删除重复条目,然后使用shuffle或sample:

代码语言:javascript
复制
all_data = list(set(all_data))
shuffle(all_data)
res = all_data[:3]# or any other number of items
票数 10
EN

Stack Overflow用户

发布于 2011-06-28 02:08:36

另一种方式,当然,对于所有的解决方案,您必须确保原始列表中至少有3个唯一值。

代码语言:javascript
复制
all_data = [1,2,2,3,4,5,6,7,8,8,9,10,11,11,12,13,14,15,15]
choices = []
while len(choices) < 3:
    selection = random.choice(all_data)
    if selection not in choices:
        choices.append(selection)
print choices 

票数 2
EN

Stack Overflow用户

发布于 2011-06-28 04:37:56

您还可以使用itertools.combinationsrandom.shuffle生成随机选择列表。

代码语言:javascript
复制
all_data = [1,2,2,3,4,5,6,7,8,8,9,10,11,11,12,13,14,15,15]

# Remove duplicates
unique_data = set(all_data)

# Generate a list of combinations of three elements
list_of_three = list(itertools.combinations(unique_data, 3))

# Shuffle the list of combinations of three elements
random.shuffle(list_of_three)

输出:

代码语言:javascript
复制
[(2, 5, 15), (11, 13, 15), (3, 10, 15), (1, 6, 9), (1, 7, 8), ...]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6494508

复制
相关文章

相似问题

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