Мне нужно выработать список всех возможных перестановок только случая в python
например, со входом ar, он вернется
['ar', 'Ar', 'aR', 'AR']
или дуги
['arc', 'Arc', 'ARc', 'aRc', 'aRC', 'ARC'], и я знаю, что есть какой-то хороший метод, но для жизни я не могу понять.
def all_casings(input_string):
if not input_string:
yield ""
else:
first = input_string[:1]
if first.lower() == first.upper():
for sub_casing in all_casings(input_string[1:]):
yield first + sub_casing
else:
for sub_casing in all_casings(input_string[1:]):
yield first.lower() + sub_casing
yield first.upper() + sub_casing
>>> [x for x in all_casings("foo")]
['foo', 'Foo', 'fOo', 'FOo', 'foO', 'FoO', 'fOO', 'FOO']
>>> list(all_casings("foo"))
['foo', 'Foo', 'fOo', 'FOo', 'foO', 'FoO', 'fOO', 'FOO']
'a'
никогда не должно равняться 'A'
) и вырезать первый символ (по сравнению с input_string[0]
)?