这篇文章给大家分享的是有关python如何输出列表元素的所有排列形式的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
例如:
[‘a', ‘b', ‘c'] 输出 [‘a', ‘b', ‘c'] [‘a', ‘c', ‘b'] [‘b', ‘a', ‘c'] [‘b', ‘c', ‘a'] [‘c', ‘a', ‘b'] [‘c', ‘b', ‘a']
方法一:利用递归的方式实现
def permutation(li):
len_list = len(li)
if len_list == 1:
return li
result = []
for i in range(len_list):
res_list = li[:i] + li[i+1:]
s = li[i]
per_result = permutation(res_list)
if len(per_result) == 1:
result.append(li[i:i + 1] + per_result)
else:
result += [[s] + j for j in per_result]
return result
方法二:利用python自带的模块
import itertools
def permutation(li):
print(list(itertools.permutations(li)))
补充拓展:python实现四个数字的全排列
首先我们使用常规做法,循环交换完成。
lst = [1, 3, 5, 8]
for i in range(0, len(lst)):
lst[i], lst[0] = lst[0], lst[i]
for j in range(1, len(lst)):
lst[j], lst[1] = lst[1], lst[j]
for h in range(2, len(lst)):
print(lst)
lst[j], lst[1] = lst[1], lst[j]
lst[i], lst[0] = lst[0], lst[i]
如果列表较长,元素较多,以上常规方法实现起来就比较吃力了,以下我们采用递归方式实现。
def permutations(position):
if position == len(lst) - 1:
print(lst)
else:
for index in range(position, len(lst)):
lst[index], lst[position] = lst[position], lst[index]
permutations(position+1)
lst[index], lst[position] = lst[position], lst[index]
permutations(0)
感谢各位的阅读!关于“python如何输出列表元素的所有排列形式”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。