gpt4 book ai didi

python - 如何递增字母数字值

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:55 26 4
gpt4 key购买 nike

目前我正在开发一个程序。我希望它增加一个 5 个字符的字母数字值。 (抱歉,如果增量不是正确的词。)

所以我想让程序说从 55aa0 开始到 99zz9 结束。我希望它从 55aa0 而不是 00aa0 开始的原因是因为对于我正在做的事情来说这是浪费时间。

我还想将该值分配给一个变量,并将其附加到另一个变量的末尾,并调用这个 url。

例如 url 可以是:domain.de/69xh2

如果您需要更多信息,我很乐意添加。

count = 0
while count <= n:
url = ""
if url.endswith(".jpg"):
fileType = ".jpg"
elif url.endswith(".png"):
fileType = ".png"

if os.path.isfile("images/" + fileName):
pass
else:
urllib.urlretrieve(url, "images/" + count + fileType)
count = count + 1

最佳答案

这听起来像是 itertools 的工作:

from itertools import dropwhile, islice, product

from string import digits, ascii_lowercase as letters

def values():
"""Yield strings in format '00aa0', starting with '55aa0'."""
def pred(t):
"""Return False once second digit in tuple t reaches '5'."""
return t[1] < '5'
for t in dropwhile(pred, product(digits[5:], digits, letters,
letters, digits)):
yield "".join(t)

这开始于(根据 Simon 的建议使用 list(islice(values(), 0, 21))):

['55aa0', '55aa1', '55aa2', '55aa3', '55aa4', '55aa5', 
'55aa6', '55aa7', '55aa8', '55aa9', '55ab0', '55ab1',
'55ab2', '55ab3', '55ab4', '55ab5', '55ab6', '55ab7',
'55ab8', '55ab9', '55ac0']

为此使用 itertools 的一个优点是您不必在内存中构建整个(304,200 个元素)列表,但可以对其进行迭代:

for s in values():
# use s

请注意,此版本与您的要求紧密相关(向 Krab 致敬以提高效率),但它可以轻松修改以用于更一般的用途。

一个更快的版本,同样来自 Krab 的建议:

def values():
"""Yield strings in format '00aa0', starting with '55aa0'."""
for t in product(map(str, range(55, 100)), letters, letters, digits):
yield "".join(t)

注意:在 Python 2.x 中使用 xrangeitertools.imap

关于python - 如何递增字母数字值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20926491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com