Поиск всех возможных вариантов перестановки в Python - PullRequest
4 голосов
/ 22 июля 2011

Мне нужно составить список всех возможных перестановок только для случая в python, например, при вводе ar он вернет ['ar', 'Ar', 'aR', 'AR']
или дуга ['arc', 'Arc', 'ARc', 'aRc', 'aRC', 'ARC'], и я знаю, что, вероятно, есть какой-то хороший метод, но для жизни я не могу понятьэто из.

1 Ответ

16 голосов
/ 22 июля 2011
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']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...