给定 N 个项目的列表,如何生成长度 LEN 的排列?

发布于 2025-01-07 12:07:23 字数 413 浏览 1 评论 0原文

注意:我正在用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

日记撕了你也走了 2025-01-14 12:07:23
itertools.permutations(my_list, 3)
itertools.permutations(my_list, 3)
您的好友蓝忘机已上羡 2025-01-14 12:07:23

假设您使用的是 python 2.6 或更高版本:

from itertools import permutations
for i in permutations(your_list, 3):
    print i

Assuming you're in python 2.6 or newer:

from itertools import permutations
for i in permutations(your_list, 3):
    print i
念﹏祤嫣 2025-01-14 12:07:23

如果您需要长度为 n 的列表(其中 n 可能大于列表元素)以及重复元素的所有组合:

import itertools
list(itertools.product([-1,1], repeat=3))

[(-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:

import itertools
list(itertools.product([-1,1], repeat=3))

[(-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]

您的好友蓝忘机已上羡 2025-01-14 12:07:23

您应该使用 permutations 函数itertools 模块。

>>> import itertools
>>> lst = ['a','b','c','d','e','f','g','h','i','j']
>>> itertools.permutations(lst, 3)

或者,如果您确实想要获得组合,请使用 组合函数。

You should use the permutations function from the itertools module.

>>> import itertools
>>> lst = ['a','b','c','d','e','f','g','h','i','j']
>>> itertools.permutations(lst, 3)

Or, if you really want to get combinations, then use the combinations function.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文