如何用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_
相关产品推荐
相关产品推荐

