python - 如何在 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
是否有更好或更有效的方法来生成字符串序列?
解决方案
你可能想要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'
推荐阅读
- excel - Excel中的嵌套IF和OR公式
- node.js - DocumentDB 使用的 IOPS 超出了应有的水平
- docker - ssh-keygen:在 Docker 中找不到命令
- python - 如何读取大文本文件避免逐行读取 :: Python
- javascript - 任何操作表单用户不断刷新 JsonWebToken
- python - `scipy.signal.residue` 或 `scipy.signal.residuez` 使用滤波器的零极点增益表示
- asp.net-core - 无法将 ASPNETCORE_ENVIRONMENT 更改为“暂存”以外的其他值
- javascript - 在 NodeJS 中正确声明常量以防止内存泄漏和正确缓存
- c - 为什么有符号的 char min -128 而不是 -127?
- r - R函数,多个If语句形式的长度和艺术