You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取字符串列表的所有排列?Python代码实现咨询

生成字符串列表的全排列(Python实现)

方法1:利用标准库itertools.permutations(简便高效)

Python内置的itertools模块提供了现成的排列生成工具,能快速得到结果,适合快速开发场景。

假设你的基础代码已经完成输入转字符列表的逻辑,补充排列生成的完整代码如下:

import itertools

# 基础代码:获取输入并转为字符列表
word = input("请输入单词:").strip()
char_list = list(word)

# 生成所有全排列并拼接为字符串
permutations = [''.join(p) for p in itertools.permutations(char_list)]

# 按要求格式输出结果
print('、'.join(permutations))
  • itertools.permutations(char_list)会生成原列表所有长度为len(char_list)的排列(即全排列),每个排列以元组形式返回
  • 通过''.join(p)将每个排列元组拼接为完整字符串
  • 最后用'、'.join()将所有排列字符串按示例格式连接输出

方法2:手动实现回溯算法(理解原理)

如果需要掌握排列生成的底层逻辑,可以用回溯算法手动实现,核心思路是递归选择剩余字符、构建排列,完成后回溯尝试其他可能。

完整代码如下:

# 基础代码:获取输入并转为字符列表
word = input("请输入单词:").strip()
char_list = list(word)

def generate_permutations(chars):
    result = []
    
    def backtrack(current_arr, remaining_chars):
        # 剩余字符为空时,当前排列已完成,加入结果列表
        if not remaining_chars:
            result.append(''.join(current_arr))
            return
        # 遍历剩余字符,逐个选择并递归处理
        for i in range(len(remaining_chars)):
            # 选择当前字符加入排列
            current_arr.append(remaining_chars[i])
            # 递归处理剩下的字符(排除已选的当前字符)
            backtrack(current_arr, remaining_chars[:i] + remaining_chars[i+1:])
            # 回溯:撤销选择,尝试下一个字符
            current_arr.pop()
    
    backtrack([], chars)
    return result

# 生成并输出排列
permutations = generate_permutations(char_list)
print('、'.join(permutations))
  • backtrack函数负责递归构建排列:current_arr记录当前正在构建的排列,remaining_chars是还未使用的字符
  • 当remaining_chars为空时,说明得到一个完整排列,将其转为字符串加入结果
  • 每次递归后通过pop()撤销选择,确保能遍历所有可能的排列组合

两种方法对于输入["T","H","E"](对应输入单词THE),都会输出:THE、TEH、HTE、HET、ETH、EHT,完全符合需求。

内容的提问来源于stack exchange,提问作者KingPepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:05:28