给定 N 个项目的列表,如何生成长度 LEN 的排列?
注意:我正在用 python 处理这个问题。
例如,给定一个列表:
list = ['a','b','c','d','e','f','g','h','i','j']
我想生成一个包含所有可能的 3 项组合的列表列表:
['a','b','c'],
['a','b','d'],
['a','b','e']
排列不应在排列中使用相同的项目两次,但顺序很重要并且代表应包含的不同排列,例如,
['a','b','c'],
['a','c','b']
两者都应该包括在内。
“3”是我想要生成的排列的魔幻长度,但我不会看不起任意长度排列的解决方案。
感谢您的帮助!
Note: I'm working in python on this.
For example, given a list:
list = ['a','b','c','d','e','f','g','h','i','j']
I want to generate a list of lists with all possible 3-item combinations:
['a','b','c'],
['a','b','d'],
['a','b','e']
The permutations should not use the same item twice in a permutation, but the order is important and represents distinct permutations that should be included, e.g.,
['a','b','c'],
['a','c','b']
Should both be included.
"3" is the magic length for the permutations I'm looking to generate, but I wouldn't look down on a solution for arbitrary length permutations.
Thanks for any help!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
假设您使用的是 python 2.6 或更高版本:
Assuming you're in python 2.6 or newer:
如果您需要长度为 n 的列表(其中 n 可能大于列表元素)以及重复元素的所有组合:
[(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]
想象一个笛卡尔积如 [-1,1]x[-1,1]x[-1,1]
In case you need all combinations of a list with length n where n may be larger than the list elements, and also with repeated elements:
[(-1, -1, -1), (-1, -1, 1), (-1, 1, -1), (-1, 1, 1), (1, -1, -1), (1, -1, 1), (1, 1, -1), (1, 1, 1)]
imagine a cartesian product like [-1,1]x[-1,1]x[-1,1]
您应该使用
permutations
函数itertools 模块。或者,如果您确实想要获得组合,请使用
组合
函数。
You should use the
permutations
function from theitertools
module.Or, if you really want to get combinations, then use the
combinations
function.