【发布时间】:2020-04-02 04:48:32
【问题描述】:
我想创建一个不允许重复项的子集列表,这里是我的示例代码
import random
idx = (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,21,22,23,24,25,26,27,28,29,30)
n = 3
selected_unique_subset = []
for i in range(n):
selected_unique_subset.append(set(random.choices(idx, k=int(len(idx) / n))))
print(selected_unique_subset)
输出:
从下面的列表中,子集在第一个子集 {2, 5, 7, 12, 19, 25, 28, 29} 中有重复的元素 2
和最后一个子集{2, 7, 15, 17, 21, 24, 26, 27, 30} 中的2,例如
[
{2, 5, 7, 12, 19, 25, 28, 29},
{8, 12, 14, 15, 16, 18, 19, 21, 24, 28},
{2, 7, 15, 17, 21, 24, 26, 27, 30}
]
期待:
我希望每个子集不应该包含重复项,它应该是随机且唯一的。
谁能给我一些建议来解决这个挑战?
【问题讨论】:
-
id覆盖内置函数,仅供参考。为什么不选择子列表,然后在上面使用set? -
编辑后问题描述不清楚。当您谈论随机子集时,为什么只有 3 个子集?而且“独特”一词也很模糊。
标签: python python-3.x algorithm random