Python实现列表元素全排列的两种核心方法

周叙
周叙
发布时间:2026-10-13| 2人浏览过
原创

本文介绍在Python中获取列表元素所有排列形式的两种主要方法。第一种是利用递归算法手动实现全排列逻辑,适用于理解算法原理;第二种是调用Python标准库itertools模块中的permutations函数,代码简洁高效。文章还通过四个数字的全排列示例,对比了常规循环交换与递归实现的差异,帮助开发者根据场景选择合适方案。

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输出列表元素所有排列形式的介绍到此结束,希望能为读者提供参考,并欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。