【问题标题】:All permutations in adjacent elements of list列表相邻元素中的所有排列
【发布时间】:2020-03-22 04:23:17
【问题描述】:

我这样做:

from itertools import chain, combinations, permutations
import itertools

i = [5, 6, 7]

x = list(combinations(i, 2))

x.append((x[1][0],))

x = list(itertools.chain.from_iterable(x))

采取所有可能的排列,但在一个扁平列表中,其中每对相邻元素对应一个排列。

这给出了:

[5, 6, 5, 7, 6, 7, 5]

这里列表中的相邻元素对都是排列:

(5,6), (6,5), (5,7), (7,6), (6,7), (7,5) 

而不是经典的带有排列的元组列表:

[(5, 6), (5, 7), (6, 5), (6, 7), (7, 5), (7, 6)]

有没有比我的代码更简洁和/或快速的功能或方式?

【问题讨论】:

  • 为什么你的代码输出只有 4 对,而不是经典的 6 对?
  • 我不清楚你想要什么。您声明您只需要相邻的元素,但您的代码会找到所有排列。
  • 代码生成所有组合,然后添加包含结束元素的反向副本。
  • @QuangHoang,如果你取所有相邻元素对,那么它们是 6 ;) 实际上对应于所有排列。现在更清楚了吗?
  • @Prune,我想要所有排列,但在一个扁平列表中,其中每对相邻元素对应一个排列。

标签: python permutation flatten


【解决方案1】:

您正在调用组合函数而不是排列。试试这个

from itertools import chain, combinations, permutations
import itertools

i = [5, 6, 7]

x = list(permutations(i, 2))
print(x)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多