如何将itertools.permutations的元组输出转为列表的列表?
问题:将itertools.permutations的多行元组输出转为单个列表的列表形式
原代码运行后会逐行输出独立元组:
import itertools perm = itertools.permutations(['A','B','C','D','E','F'],4) for val in perm: print(val)
输出示例:
('F', 'E', 'B', 'C') ('F', 'E', 'B', 'D') ('F', 'E', 'C', 'A') ('F', 'E', 'C', 'B') ……
需要修改代码,让输出变为单个包含多个子列表的嵌套列表,格式如下:
[['F', 'E', 'B', 'C'], ['F', 'E', 'B', 'D'], ['F', 'E', 'C', 'A'],...,]
解决方案
方法1:列表推导式批量转换
itertools.permutations返回的是迭代器,通过列表推导式遍历迭代器中的每个元组,用list()将元组转为子列表,最终收集为一个大列表:
import itertools perm = itertools.permutations(['A','B','C','D','E','F'],4) result = [list(item) for item in perm] print(result)
方法2:map函数快速转换
利用map()将迭代器内的每个元组映射为列表,再用list()将map对象转换为最终的嵌套列表:
import itertools perm = itertools.permutations(['A','B','C','D','E','F'],4) result = list(map(list, perm)) print(result)
两种方法的输出均符合需求,Python会自动对长嵌套列表进行换行排版,与示例格式一致。
内容的提问来源于stack exchange,提问作者Thando
相关产品推荐
相关产品推荐

