猿问

如何在Python中生成列表的所有排列

如何在Python中生成列表的所有排列

如何在Python中生成列表的所有排列,与该列表中的元素类型无关?

例如:

permutations([])

[]


permutations([1])

[1]


permutations([1, 2])

[1, 2]

[2, 1]


permutations([1, 2, 3])

[1, 2, 3]

[1, 3, 2]

[2, 1, 3]

[2, 3, 1]

[3, 1, 2]

[3, 2, 1]


SMILET
浏览 2513回答 4
4回答

狐的传说

以下代码仅适用于Python 2.6及更高版本一,进口itertools:import itertools排列(订单事宜):print list(itertools.permutations([1,2,3,4], 2))[(1, 2), (1, 3), (1, 4),(2, 1), (2, 3), (2, 4),(3, 1), (3, 2), (3, 4),(4, 1), (4, 2), (4, 3)]组合(顺序无关紧要):print list(itertools.combinations('123', 2))[('1', '2'), ('1', '3'), ('2', '3')]笛卡尔积(有几个迭代):print list(itertools.product([1,2,3], [4,5,6]))[(1, 4), (1, 5), (1, 6),(2, 4), (2, 5), (2, 6),(3, 4), (3, 5), (3, 6)]笛卡儿积(一个可迭代的本身):print list(itertools.product([1,2], repeat=3))[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]

侃侃尔雅

def permutations(head, tail=''):     if len(head) == 0: print tail    else:         for i in range(len(head)):             permutations(head[0:i] + head[i+1:], tail+head[i])称为:permutations('abc')
随时随地看视频慕课网APP
我要回答