python - random.sample(sample,k) 和 itertools.combinations(p,r) 之间的区别
问题描述
您好,我是 python 新手,刚刚开始编写基本的 python 脚本。我决定编写一个密码生成器程序。我遇到了random.sample()
和itertools.combinations()
功能。我想知道它们之间的区别。我已阅读文档并得出以下结论:
1. random.sample() 将返回总体中唯一组合的列表,前提是总体中没有重复值。
2.combinations () 还将返回一个 (p,r) 可能组合的元组,其中 r 是长度。并且有这一行,“元素根据它们的位置而不是它们的值被视为唯一的。因此,如果输入元素是唯一的,则每个组合中都不会出现重复值。”我不明白。我假设它说输入元素必须是唯一的才能获得唯一的组合
所以我得出最后的结论,两者都是一样的。我想知道我是对还是错(请解释一下)。谢谢你。
解决方案
它们不一样,实际上它们做的事情完全不同。是一个生成器 - 它从给定的一组值中返回所有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)
并注意区别。
推荐阅读
- javascript - 当类型:“DELETE”未通过时,Backbone destroy 方法正在触发 post 调用而不是 delete
- freeswitch - Freeswitch中是否有read的execute api?
- android - 调用 onItemLongClickListener 时,即使我在 onItemLongClick 中返回 true,也会调用 onItemClickListener
- vbscript - 单行输入 VBS 自动打字机
- kubernetes - 基于 pod 或部署的 GKE 账单明细
- java - 找出数字之间的阿姆斯壮数
- cloud-foundry - 没有一个 buildpack 检测到兼容的应用程序
- joomla - Joomla 文件未找到错误
- unity3d - 如何在 Unity 上使用 Google Text-To-Speech?
- ios - Cocopods Post_Install 脚本错误