社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

生成python列表的二维置换

sshussain270 • 4 年前 • 739 次点击  

我有一个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”是此行的列。

我想以这样的方式产生排列

  1. 总行数与原始父列表中的行数相同,即2。

  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']

  3. 每行的第一列在排列中从不改变。例如:“row_0”in和“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)

编辑

我要的输出是这样的:

[
  [['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']],
]

a、 每个子列表中的第一项保持不变。 b、 每个子列表中的项都保留在该列表中。 c、 父列表和子列表的项目总数保持不变。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/55375
 
739 次点击  
文章 [ 1 ]  |  最新文章 4 年前
YOBEN_S
Reply   •   1 楼
YOBEN_S    4 年前

据我所知,你所描述的没有内置函数

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']]]