创建按字母顺序升序的列表

我想创建按字母顺序升序的名称,如 excel 中的列名。那是我想有什么。像 a,b,c,...,z,aa,ab,...az,...zz,aaa,aab,....


我试过:


for i in range(1000):

    mod = int(i%26)

    div = int(i/26)

    print(string.ascii_lowercase[div]+string.ascii_lowercase[mod])

直到zz 才有效,但由于索引用完而失败


aa

ab

ac

ad

ae

af

ag

ah

ai

aj

ak

al

.

.

.

zz

索引错误


蝴蝶不菲
浏览 140回答 3
3回答

慕运维8079593

你可以利用itertools.product():from itertools import productfrom string import ascii_lowercasefor i in range(1, 4):    for x in product(ascii_lowercase, repeat=i):        print(''.join(x))首先,您需要所有字母,然后是所有对,然后是所有三元组等等。这就是为什么我们首先需要遍历您想要的所有字符串长度 ( for i in range(...))。然后,我们需要与i字母的所有可能的关联,因此我们可以使用product(ascii_lowercase)which 等效于嵌套for循环重复i次数。这将生成i所需大小的元组,最后只生成join()一个字符串。要无限制地连续生成名称,请将for循环替换为while:def generate():    i = 0    while True:        i += 1        for x in product(ascii_lowercase, repeat=i):            yield ''.join(x)generator = generate()next(generator)  # 'a'next(generator)  # 'b'...

慕的地6264312

对于通用解决方案,我们可以使用生成器和islice来自itertools:import stringfrom itertools import islicedef generate():    base = ['']    while True:        next_base = []        for b in base:            for i in range(26):                next_base.append(b + string.ascii_lowercase[i])                yield next_base[-1]        base = next_baseprint('\n'.join(islice(generate(), 1000)))和输出:abc...zaaab...zzaaaaab...您可以islice根据需要使用任意数量的字符串。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python