Как создать непрерывный алфавитный список python (от az, затем от aa, ab, ac и т. Д.)

Я хотел бы сделать алфавитный список для приложения, аналогичного листу Excel.

Пользователь вводит количество ячеек, и я хотел бы сгенерировать список. Например, пользователю требуется 54 ячейки. Тогда я бы сгенерировал

'a', 'b', 'c', …, 'z', 'aa', 'ab', 'ac', …, 'az', 'ba', 'bb'

Я могу сгенерировать список из [ref]

from string import ascii_lowercase L = list(ascii_lowercase) 

Как сшить его вместе? Здесь задан аналогичный вопрос для PHP. Есть ли у кого-то эквивалент python?

Используйте itertools.product .

 from string import ascii_lowercase import itertools def iter_all_strings(): size = 1 while True: for s in itertools.product(ascii_lowercase, repeat=size): yield "".join(s) size +=1 for s in iter_all_strings(): print s if s == 'bb': break 

Результат:

 a b c d e ... y z aa ab ac ... ay az ba bb 

Это имеет дополнительное преимущество, выходя за рамки двухбуквенных комбинаций. Если вам понадобится миллион строк, он с радостью даст вам три, четыре и пять буквенных строк.


Совет бонусного стиля: если вам не нравится иметь явный break внутри нижнего цикла, вы можете использовать islice чтобы сделать цикл завершенным самостоятельно:

 for s in itertools.islice(iter_all_strings(), 54): print s 

Вы можете использовать понимание списка.

 from string import ascii_lowercase L = list(ascii_lowercase) + [letter1+letter2 for letter1 in ascii_lowercase for letter2 in ascii_lowercase] 

После ответа @Kevin:

 from string import ascii_lowercase import itertools # define the generator itself def iter_all_strings(): size = 1 while True: for s in itertools.product(ascii_lowercase, repeat=size): yield "".join(s) size +=1 

Приведенный ниже код позволяет генерировать строки, которые могут быть использованы для генерации уникальных ярлыков, например.

 # define the generator handler gen = iter_all_strings() def label_gen(): for s in gen: return s # call it whenever needed print label_gen() print label_gen() print label_gen() 
Interesting Posts

Excel VBA: ошибка «Next Without For»

Чтение и запись в одном файле excel с рубином

Почему мне нужно обновить сводную таблицу, чтобы включить все поля?

Динамическая функция .Range () Excel Macro

Что мне нужно сделать, чтобы настроить Visual Studio на возможность управлять файлом Excel?

как назначить значение пользователям в data.frame на основе записей идентификаторов пользователей из другого data.frame

Excel не распознает дату из mysql в качестве даты

Скрытые данные в Excel, извлечение данных, первоначально связанных с файлом MDB

Как найти и вывести дубликаты текстовых полей в Excel

Печать выбранных страниц в листе Excel с помощью макроса VBA

VBA, который копирует строки в новый лист на основе содержимого ячейки каждой строки (пример включен)

Excel VBA – Скрыть диапазон строк после сводной таблицы с переменным размером

Найдите тексты с одного листа и используйте их для замены на другом листе

NMap не будет работать в Visual Basic Powershell

Qt отправляет данные из form1 в компонент formview tree2

Давайте будем гением компьютера.