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

2Ob*_*Obe 2 python alphabetical

我想创建按字母顺序升序的名称,例如 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])
Run Code Online (Sandbox Code Playgroud)

直到zz为止都有效,但由于索引耗尽而失败

aa
ab
ac
ad
ae
af
ag
ah
ai
aj
ak
al
.
.
.
zz
Run Code Online (Sandbox Code Playgroud)

索引错误

Del*_*gan 5

您可以利用itertools.product()

from itertools import product
from string import ascii_lowercase

for i in range(1, 4):
    for x in product(ascii_lowercase, repeat=i):
        print(''.join(x))
Run Code Online (Sandbox Code Playgroud)

首先,您需要所有字母,然后是所有对,然后是所有三元组,等等。这就是为什么我们首先需要迭代您想要的所有字符串长度 ( for i in range(...))。

然后,我们需要与i字母的所有可能的关联,因此我们可以使用product(ascii_lowercase)相当于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'
...
Run Code Online (Sandbox Code Playgroud)