【发布时间】:2020-03-11 17:06:05
【问题描述】:
我查看了几个与此问题类似的答案,似乎都有很好的 oneliner 答案,但仅处理通过删除重复项使列表独一无二的事实。我需要列表正好有 5 个。
我能想到的唯一代码是这样的:
from random import *
tuples = []
while len(tuples) < 5:
rand = (randint(0, 6), randint(0,6))
if rand not in tuples:
tuples.append(rand)
我觉得有一种更简单的方法,但我想不通。我尝试从随机播放 sample():
sample((randint(0,6), randint(0,6)), 5)
但这给了我一个“样本大于总体或为负”的错误。
【问题讨论】:
-
您是在寻找从一小部分(例如
(randint(0, 6), randint(0,6))的 49 种组合)中进行选择还是在许多可能性中进行选择?你真的需要list(有序)还是set(无序)也可以? -
在我的程序中,该集合受限于一个参数.. 就像 randint(0, size)。不必订购。
-
请提供完整的错误信息。顺便说一句,
import *通常是不好的做法。 -
选择五个唯一的数字。然后选择其他五个数字,不一定是唯一的。通过将唯一列表中的一个数字(因此所有元组也是唯一的)与另一个列表中的一个数字组合来创建元组,按顺序处理两个列表。
标签: python python-3.x random tuples unique