我这样做:
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), (5, 7), (6, 5), (6, 7), (7, 5), (7, 6)]
有没有比我的代码更简洁和/或更快速的方法或功能?
您正在调用组合函数,而不是排列。试试这个
from itertools import chain, combinations, permutations
import itertools
i = [5, 6, 7]
x = list(permutations(i, 2))
print(x)