首页 > 解决方案 > random.sample(sample,k) 和 itertools.combinations(p,r) 之间的区别

问题描述

您好,我是 python 新手,刚刚开始编写基本的 python 脚本。我决定编写一个密码生成器程序。我遇到了random.sample()itertools.combinations()功能。我想知道它们之间的区别。我已阅读文档并得出以下结论:
1. random.sample() 将返回总体中唯一组合的列表,前提是总体中没有重复值。
2.combinations () 还将返回一个 (p,r) 可能组合的元组,其中 r 是长度。并且有这一行,“元素根据它们的位置而不是它们的值被视为唯一的。因此,如果输入元素是唯一的,则每个组合中都不会出现重复值。”我不明白。我假设它说输入元素必须是唯一的才能获得唯一的组合

所以我得出最后的结论,两者都是一样的。我想知道我是对还是错(请解释一下)。谢谢你。

标签: pythonrandomcombinationsitertools

解决方案


它们不一样,实际上它们做的事情完全不同。是一个生成器 - 它从给定的一组值中返回所有itertools.combinations()组合的序列。提供一个(随机选择的)组合。运行这两个片段:random.sample()

import random
print(random.sample([1,2,3], 2))

import itertools
for c in itertools.combinations([1,2,3],2):
    print(c)

并注意区别。


推荐阅读