进行置换;基于activestate配方190465

xpermutations的Python项目详细描述


简介

这个包是由xpermutations recipe 由Ulrich Hoffman提交给ActiveState。

文中提供的文件如下并假定 在Creative Commons Attribution 3.0许可下。

使用PIP或Easy_安装:

sudo pip install xpermutations

配方文件(Ulrich Hoffman)

算法中经常需要置换和组合。 对解空间进行了彻底的搜索。他们是 通常相当大,所以最好不要计算它们 完全但最好是懒散地生成它们。这个食谱 使用Python2.2生成器创建适当的生成器 对象,例如可以用作for循环中的范围。

这个配方提供了组合和排列,并且懒散地 生成它们。你可以对 排列/组合项不只是打印它们。

如果您需要排列的完整列表,只需使用 内置的list()运算符。请注意,结果列表可能很大。

这里定义的所有x-生成器都会产生包含 原始序列。它们的区别在于采用了哪些元素:

xpermutations()从序列中获取所有元素,顺序很重要。

xcombinations()从序列中提取n个不同的元素, 秩序很重要。

xuniquecombinations()从序列中提取n个不同的元素, 秩序无关紧要。

xselections()从 顺序,顺序很重要。

请注意,“distinct”的意思是“原始文件中的不同元素 “顺序”而不是“不同值”,即:

>>> list(xuniqueCombinations('aabb', 2))
[['a', 'a'], ['a', 'b'], ['a', 'b'], ['a', 'b'], ['a', 'b'], ['b', 'b']]

将后者与:

>>> all_different = list(set('aabb'))
>>> list(xuniqueCombinations(all_different, 2))
[['a', 'b']]

如果序列中只有具有唯一值的项,则不会 注意区别(不是双关语)。

注意事项

集合理论家可能会对这个术语提出异议。

示例

xcombinations()

>>> " ".join("".join(x) for x in xcombinations("1234", 2))
'12 13 14 21 23 24 31 32 34 41 42 43'

xuniquecombinations()

>>> " ".join("".join(x) for x in xuniqueCombinations("1234", 2))
'12 13 14 23 24 34'

xselections()

>>> " ".join("".join(x) for x in xselections("1234", 2))
'11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44'

expermutations()

>>> " ".join("".join(x) for x in xpermutations("123"))
'123 132 213 231 312 321'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
virtualbox无法从java移动共享文件夹中的文件   java如何连接Android 4.3.5(GA)的apache HttpClient库?   片段中的java Recyclerview未立即显示警报对话框结果   javac(n,r)计算器程序不工作   java使用BooleanQuery还是编写更多索引?   如何在java中设置y/n循环?   java不兼容的通用通配符捕获   java如何在安卓xml中编写数据绑定时的三元操作条件   java如何使用FileDialog?   java如何创建单元测试来检测是否有人使用错误的编码编辑了文件?   java如何从唯一的字符串生成唯一的int?   java gradletomcatplugin:log4j:WARN找不到记录器的附加程序   java我的动态编程解决方案(Kefa和第一步)在codeforces中有什么问题?   java每天更新两个数据库,使它们都包含相同的有效数据集   java如何检查给定的时间是否在时间限制之间   java在单个json POST上保存父级和子级   java如何获取Solr字段类型