首页 > 解决方案 > 如何在 Python 中生成 10 个字符的字母数字序列字符串

问题描述

我一直在寻找一种高效的 Python 代码来生成 10 个字符的字母数字字符串。字符串应该从“AA0AA0000A”开始,并且应该从右到左增加序列

我试过的代码:

import string
from itertools import permutations as p

alpha = string.ascii_uppercase
num = string.digits

for a, b in p(alpha, 2):
    for c in p(num, 1):
        for d, e in p(alpha, 2):
            for f, g, h, i in p(num, 4):
                for j in p(alpha, 1):
                    print(a, b, c, d, e, f, g, h, i, j)

和我得到的输出样本:

A B ('0',) A B 0 1 2 3 ('A',)
A B ('0',) A B 0 1 2 3 ('B',)
A B ('0',) A B 0 1 2 3 ('C',)

但我期望的输出就像

A A 0 A A 0 0 0 0 A
A A 0 A A 0 0 0 0 B
A A 0 A A 0 0 0 0 C

是否有更好或更有效的方法来生成字符串序列?

标签: python

解决方案


你可能想要itertools.product

from itertools import product

# ...
for p in product(alpha, alpha, num, alpha, alpha, num, num, num, num, alpha):
    print(*p)

但是请注意,这个循环永远不会结束(或者如果你有时间,在 1188137600000 次迭代之后)=)所以你可能想要一个生成器函数来简化处理:

def gen():
    for p in product(alpha, alpha, num, alpha, alpha, num, num, num, num, alpha):
        yield ''.join(p)

>>> g = gen()
>>> next(g)
'AA0AA0000A'
>>> next(g)
'AA0AA0000B'
>>> next(g)
'AA0AA0000C'

推荐阅读