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

如何用Python编写接收字符串并返回其所有大小写组合的函数

大小写全组合生成函数实现

问题描述

编写一个Python函数,接收字符串作为参数,返回切换每个字符大小写生成的全部可能组合。

示例说明

  • 输入参数:"a",返回结果:["a", "A"]
  • 输入参数:"aB",返回结果:["ab", "Ab", "aB", "AB"]

注:如果输入包含非字母字符(数字、符号、中文等),这类字符无大小写属性,会保留原始值不变

实现方案

方案1:基于itertools.product实现(简洁高效)

利用笛卡尔积直接生成所有字符可选值的组合,代码可读性高:

from itertools import product

def case_permutations(s: str) -> list[str]:
    # 为每个字符生成可选取值列表
    char_options = []
    for char in s:
        if char.isalpha():
            char_options.append([char.lower(), char.upper()])
        else:
            char_options.append([char])
    # 拼接笛卡尔积的所有组合为字符串
    return [''.join(comb) for comb in product(*char_options)]

方案2:递归实现(无第三方依赖)

如果不想引入额外依赖,可以用递归逐层处理每个字符:

def case_permutations(s: str) -> list[str]:
    # 递归终止条件:空字符串返回空组合
    if len(s) == 0:
        return [""]
    # 先获取后续子串的所有组合
    sub_result = case_permutations(s[1:])
    current = s[0]
    result = []
    for item in sub_result:
        if current.isalpha():
            result.append(current.lower() + item)
            result.append(current.upper() + item)
        else:
            result.append(current + item)
    return result

测试用例

# 测试单字符
print(case_permutations("a"))
# 输出:['a', 'A']

# 测试多字符混合大小写
print(case_permutations("aB"))
# 输出:['ab', 'Ab', 'aB', 'AB']

# 测试带非字母字符
print(case_permutations("a1b"))
# 输出:['a1b', 'A1b', 'a1B', 'A1B']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:06:08