Python中如何生成列表内字典元素的全排列
如何生成含字典元素列表的所有全排列
嘿,这个需求用Python的标准库就能轻松搞定!不用自己写复杂的排列逻辑,itertools模块里的permutations方法正好能帮你生成所有可能的全排列。
直接上代码,一看就懂:
import itertools # 你的原始列表 original_list = [{'x': 0, 'y': 0}, {'x': 1, 'y': 0}, {'x': 2, 'y': 2}] # 生成所有全排列,把每个排列的元组转成列表 all_permutations = [list(perm) for perm in itertools.permutations(original_list)] # 输出结果,和你要的格式完全一致 print(all_permutations)
代码说明:
itertools.permutations(original_list)会生成原列表所有元素的全排列,返回的是一个迭代器,每个元素是元组类型的排列结果;- 我们用列表推导式
[list(perm) ...]把每个元组转换成列表,这样就得到了你需要的二维数组格式。
运行后得到的结果就是你给出的示例:
[[{'x': 0, 'y': 0}, {'x': 1, 'y': 0}, {'x': 2, 'y': 2}], [{'x': 0, 'y': 0}, {'x': 2, 'y': 2}, {'x': 1, 'y': 0}], [{'x': 1, 'y': 0}, {'x': 0, 'y': 0}, {'x': 2, 'y': 2}], [{'x': 1, 'y': 0}, {'x': 2, 'y': 2}, {'x': 0, 'y': 0}], [{'x': 2, 'y': 2}, {'x': 0, 'y': 0}, {'x': 1, 'y': 0}], [{'x': 2, 'y': 2}, {'x': 1, 'y': 0}, {'x': 0, 'y': 0}]]
如果需要处理更大的列表,这个方法也同样适用,因为itertools是高效的标准库实现,性能比手写排列算法好很多哦~
内容的提问来源于stack exchange,提问作者codec
相关产品推荐
相关产品推荐

