您可以将01110、00011 等二进制组合与itertools.product() 一起使用,以获取带有字符串的每个案例组合。这意味着将 1 设置为大写,将 0 设置为小写。所以01110 -> hOUSe, 00011 -> houSE 等等。
from itertools import product
def get_all_cases(string):
return [
"".join(
letter.upper() if binary == 1 else letter
for letter, binary in zip(string.lower(), binary_comb)
)
for binary_comb in product([0, 1], repeat=len(string))
]
输出:
>>> get_all_cases("House")
>>> ['house', 'housE', 'houSe', 'houSE', 'hoUse', 'hoUsE', 'hoUSe', 'hoUSE', 'hOuse', 'hOusE', 'hOuSe', 'hOuSE', 'hOUse', 'hOUsE', 'hOUSe', 'hOUSE', 'House', 'HousE', 'HouSe', 'HouSE', 'HoUse', 'HoUsE', 'HoUSe', 'HoUSE', 'HOuse', 'HOusE', 'HOuSe', 'HOuSE', 'HOUse', 'HOUsE', 'HOUSe', 'HOUSE']
您也可以只映射到 True 和 False 布尔值,而不是 1 和 0。
from itertools import product
def get_all_cases(string):
return [
"".join(
letter.upper() if is_upper else letter
for letter, is_upper in zip(string.lower(), comb)
)
for comb in product([False, True], repeat=len(string))
]