![](/img/trans.png)
[英]The maximum number of element in a list when generate all the permutations of a list in Python
[英]Generate 2 dimensional permutations of a python list
我有一个Python列表如下:
[['row_0','row_0_0','row_0_1'],['row_1','row_1_0','row_1_1']]
其中父列表中的每个列表称为row
,子列表中的每个项目称为column
。 例如: ['row_0','row_0_0','row_0_1']
是一行。 “ row_0”,“ row_0_0”和“ row_0_1”是该行的列。
我想以这样的方式生成排列
行的总数与原始父列表中的相同,即2。
每行列的排列保留在该行内。 例如: ['row_0','row_0_0','row_0_1']
可以有一个排列['row_0','row_0_1','row_0_0']
, ['row_0','row_0_0','row_0_1']
。
每行的第一列从不更改排列。 例如:“ row_0”和“ row_1”始终保持列表中的第一项。
到目前为止,我已经实现了以下内容:
perm_list = [['row_0','row_0_0','row_0_1'],['row_1','row_1_0','row_1_1']]
all_permutations = list(itertools.permutations(perm_list, len(perm_list))
print(all_permutations)
但这只会在父级列表级别生成排列。 我想知道python是否具有内置工具来处理这样的功能,可以对其进行调整以满足我的需求。 任何建议将不胜感激。
编辑
我正在寻找的输出是这样的:
[
[['row_0','row_0_0','row_0_1'],['row_1','row_1_0','row_1_1']],
[['row_0','row_0_1','row_0_0'],['row_1','row_1_1','row_1_0']],
[['row_1','row_1_0','row_1_1'],['row_0','row_0_0','row_0_1']],
[['row_1','row_1_1','row_1_0'],['row_0','row_0_1','row_0_0']],
]
一种。 每个子列表中的第一项保持不变。 湾 每个子列表中的项目都保留在该列表中。 C。 父级和子级列表的项目总数保持不变。
据我了解,您所描述的没有内置功能
l1=[[list((x[0],)+y) for y in itertools.permutations(x[1:], len(x)-1)] for x in l ]
list(map(list,itertools.product(l1[0],l1[1])))
[[['row_0', 'row_0_0', 'row_0_1'], ['row_1', 'row_1_0', 'row_1_1']],
[['row_0', 'row_0_0', 'row_0_1'], ['row_1', 'row_1_1', 'row_1_0']],
[['row_0', 'row_0_1', 'row_0_0'], ['row_1', 'row_1_0', 'row_1_1']],
[['row_0', 'row_0_1', 'row_0_0'], ['row_1', 'row_1_1', 'row_1_0']]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.