【发布时间】:2021-06-05 08:56:00
【问题描述】:
我正在尝试获取包含 4 个元素的列表的可能组合,例如:('E', 'J', 'M', 'Z'),有效组合的条件是更改 每个组合中所有 4 个元素的位置
可能的组合有:
('J', 'E', 'Z', 'M')
('M', 'Z', 'E', 'J')
('Z', 'M', 'J', 'E').....
我尝试了 itertools.permutations (('E', 'J', 'M', 'Z'), 4),结果一点也不令人满意。有人可以帮忙吗?
【问题讨论】:
-
不清楚你指的是哪种语言,为什么结果不理想。
-
itertools.permutations和.combinations有意以顺序/增量方式提供结果。如果您希望结果中的“连续”项目没有位于相同位置的元素,那么请明确这一点并显示您编写的代码以尝试获得您想要的结果。此外,使用较小的列表(例如“EJM”)并显示您认为有效的结果。 -
也许你正在尝试"rotate" the list。
-
这是什么语言?你介意为语言使用标签吗? Python 显然
-
所有 6 个都无效,因为
('M', 'Z', 'E', 'J')和('M', 'Z', 'J', 'E')在同一位置有 M 和 Z。然后不能仅仅交换,因为那样会与('Z', 'M', 'E', 'J')和('Z', 'M', 'J', 'E')冲突。您的意思是替代品的“要么/或”,还是您想要问题中的 3 个,加上我提到的 2 个(5)以及原始的 1 个(总共 6 个)? 仍然将 2 个带有字母的选项放在同一位置。 那么再一次 排序的逻辑是什么?选择一个输入并写下所有预期结果 - 排列提供 24 种可能性。
标签: python list combinations permutation itertools