gpt4 book ai didi

python - 列表列表的排列

转载 作者:行者123 更新时间:2023-11-30 21:50:14 24 4
gpt4 key购买 nike

假设有一个元素列表的列表。其中每个列表可以有任意数量的元素。例如 [[1,2,3,4],[2,3],[4,5,6,7],[1]] 。我正在尝试生成此类列表的排列,其中我应该在一个此类排列中仅从最里面的列表中选择一个。所以输出将是 [1,2,4,1],[1,3,4,1]...

示例输入 = [[1,2],[3],[4]]
示例输出 = [[1,3,4],[2,3,4]]

我之前尝试过一些逻辑有缺陷的代码。以下是我中途陷入困境的代码。我无法找到解决办法。我不擅长排列和组合。

我正在尝试的与上面描述的相同,只是以下是一组坐标。 i,e 最里面的元素(在输入中)是一组坐标。

[[[1,2],[2,4]],[[2,3],[4,2]],[[1,5]],[[3,3],[7,2],[5,6]]]
def perm(a,length):
arr=[]
k=0
while (k<length):
temp=[]
for i in a:


a=[[[1,2],[2,4]],[[2,3],[4,2]],[[1,5]],[[3,3],[7,2],[5,6]]]
perm(a)

请让我知道进一步的说明。如有任何帮助,我们将不胜感激。

编辑

我想要一个不使用 itertools 或任何此类 python 模块的解决方案。我之前就应该提到这一点。否则它是一个有效且非常方便的解决方案。

答案的伪代码逻辑将做或使用一种方法而不是使用 python 库的简单答案。抱歉迟到了添加此详细信息。

最佳答案

您可以使用 itertools.product 轻松完成此操作:

>>> from itertools import product
>>> list(product(*[[1,2],[3],[4]]))
[(1, 3, 4), (2, 3, 4)]
>>> list(product(*[[1,2,3,4],[2,3],[4,5,6,7],[1]]))
[(1, 2, 4, 1), (1, 2, 5, 1), (1, 2, 6, 1), (1, 2, 7, 1),
(1, 3, 4, 1), (1, 3, 5, 1), (1, 3, 6, 1), (1, 3, 7, 1),
(2, 2, 4, 1), (2, 2, 5, 1), (2, 2, 6, 1), (2, 2, 7, 1),
(2, 3, 4, 1), (2, 3, 5, 1), (2, 3, 6, 1), (2, 3, 7, 1),
(3, 2, 4, 1), (3, 2, 5, 1), (3, 2, 6, 1), (3, 2, 7, 1),
(3, 3, 4, 1), (3, 3, 5, 1), (3, 3, 6, 1), (3, 3, 7, 1),
(4, 2, 4, 1), (4, 2, 5, 1), (4, 2, 6, 1), (4, 2, 7, 1),
(4, 3, 4, 1), (4, 3, 5, 1), (4, 3, 6, 1), (4, 3, 7, 1)]

根据文档,没有任何导入的几乎等效实现:

def product(*args, **kwds):
# product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
# product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
pools = map(tuple, args) * kwds.get('repeat', 1)
result = [[]]
for pool in pools:
result = [x+[y] for x in result for y in pool]
for prod in result:
yield tuple(prod)

关于python - 列表列表的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24594313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com