【发布时间】:2021-02-10 19:47:07
【问题描述】:
我正在编写一个工具,它希望从 13 个字符长的列表中生成所有可能的对。每对必须交换其第二个元素。即从列表ABCDEFGHIJKLM 我想生成诸如AB CD、AB CE 或CD GK 之类的对。
我正在使用 itertools.permutations 来执行此操作,并且它有效:
perm_pairs = itertools.permutations(my_list, 4)
我计划迭代 perm_pairs 并在单独的程序中使用这些对。但是,由于顺序并不重要,并且后续过程具有很高的时间复杂度,我想通过防止对倒置来提高效率。即如果我已经拥有AB CD,我不想生成CD AB。
itertools.combinations() 不会生成所有必需的对,但 itertools.permeations() 生成的对是迭代所需的 4 倍。
是否有一种“中间方式”可以避免产生反转?
【问题讨论】:
-
您需要
AB CD和BA CD还是为什么组合不起作用? -
你能举一个
combinations不产生的输出的例子吗?