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

如何用Python生成单词的所有无重复全排列组合?

生成无重复单词全排列的实现方法

对于给定的唯一单词列表,生成所有无重复的全排列,这里用Python给你两种新手友好的实现方式:

方法一:借助Python标准库快速实现

Python的itertools模块里的permutations函数专门用来生成序列的全排列,因为你的输入列表里所有单词都是唯一的,所以生成的排列自然不会有重复。

代码示例:

import itertools

words = ["Love", "Is", "What", "I", "Care", "About"]
# 生成所有全排列,permutations返回的是元组迭代器
all_permutations = itertools.permutations(words)
# 将每个排列元组转为空格分隔的字符串
result = [' '.join(perm) for perm in all_permutations]

# 打印部分结果(6个单词的全排列共720种,全部打印过于冗长)
for idx, perm_str in enumerate(result[:5], 1):
    print(f"{idx}. {perm_str}")

代码解释:

  • itertools.permutations(words):接收输入列表,返回一个迭代器,每个元素是原列表元素的一个全排列元组(比如('Love', 'Is', 'What', 'I', 'Care', 'About'))
  • ' '.join(perm):把排列元组里的单词用空格连接成你需要的字符串格式
  • 6个不同元素的全排列总数是6! = 720,这里只打印前5个示例,你可以根据需求调整打印范围。

方法二:手动实现递归(理解底层原理)

如果想搞懂全排列的逻辑,可以用递归方式实现,核心思路是:每次从剩余未使用的单词里选一个,加到当前排列中,直到所有单词都被使用,就得到一个完整的排列。

代码示例:

words = ["Love", "Is", "What", "I", "Care", "About"]
result = []

def generate_permutations(current, remaining):
    # 剩余单词为空时,当前排列完成,加入结果列表
    if not remaining:
        result.append(' '.join(current))
        return
    # 遍历剩余的每个单词,逐个选择并递归生成排列
    for i in range(len(remaining)):
        new_current = current + [remaining[i]]
        new_remaining = remaining[:i] + remaining[i+1:]
        generate_permutations(new_current, new_remaining)

# 初始调用:当前排列为空,剩余单词是全部输入
generate_permutations([], words)

# 打印前5个结果
for idx, perm_str in enumerate(result[:5], 1):
    print(f"{idx}. {perm_str}")

代码解释:

  • current:保存当前已选好的单词列表
  • remaining:保存尚未被使用的单词列表
  • 当remaining为空时,说明所有单词都已选完,将current转为字符串加入结果
  • 循环遍历remaining中的每个单词,每次选择一个后更新current和remaining,递归继续生成后续排列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:37:34