如何制作一个连续的字母列表python(从az然后从aa,ab,ac等)

我想为类似于Excel工作表的应用程序制作一个按字母顺序排列的列表。

用户会input数量的单元格,我想生成列表。 例如,用户需要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 

除了两个字母的组合外,这还有另一个好处。 如果你需要一百万string,它会愉快地给你三,四和五个字母的string。


奖金风格的提示:如果你不喜欢在底部循环内部有一个明确的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] 

凯文的回答如下:

 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 

下面的代码使得可以生成string,例如可以用来生成唯一的标签。

 # 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()