如何在Python中找到包含3个元素的列表的所有排列?
例如,输入
[1, 2, 3, 4]
将返回
[1, 2, 3]
[1, 2, 4]
[1, 3, 4]
[2, 3, 4]
谢谢!
答案 0 :(得分:6)
您想使用itertools.combinations
和list comprehension:
>>> from itertools import combinations
>>> lst = [1, 2, 3, 4]
>>> [list(x) for x in combinations(lst, 3)]
[[1, 2, 3], [1, 2, 4], [1, 3, 4], [2, 3, 4]]
>>>
关于您的评论,您可以通过添加str.join
和map
*来制作字符串列表:
>>> from itertools import combinations
>>> lst = [1, 2, 3, 4]
>>> [''.join(map(str, x)) for x in combinations(lst, 3)]
['123', '124', '134', '234']
>>>
* 注意:您需要执行map(str, x)
因为str.join
需要可迭代的字符串。