Python 生成运行ID列表的更简洁的方法

Python 生成运行ID列表的更简洁的方法,python,generate-series,Python,Generate Series,我只是做了一个函数来生成给定范围内运行ID的列表。ID以字母表开头,后面是5个数字,例如A00002。下面的函数可以工作,但我想知道是否有更干净的方法来实现这一点。谢谢 def running_ids(start, end): list = [] start = int(start[1:]) end = int(end[1:]) steps = end - start def zeros(n): zeros = 5 - len(str(n)) return zeros whi

我只是做了一个函数来生成给定范围内运行ID的列表。ID以字母表开头,后面是5个数字,例如A00002。下面的函数可以工作,但我想知道是否有更干净的方法来实现这一点。谢谢

def running_ids(start, end):
list = []
start = int(start[1:])
end = int(end[1:])
steps = end - start

def zeros(n):
    zeros = 5 - len(str(n))
    return zeros

while start <= end:
    string = "A" + "0"*zeros(start) + str(start)
    list.append(string)
    start += 1

return list
打印运行标识“A00001”、“A00005”

['A00001','A00002','A00003','A00004','A00005']

使用一个。这样,您可以根据需要生成数字,而不是一次存储所有数字。它还可以维护计数器的状态,如果您开始构建大型项目而忘记将其添加到索引中,这将非常有用。这是一种非常强大的Python编程方式:

def running_id():
    n = 1
    while True:
        yield 'A{0:05d}'.format(n)
        n += 1

C = running_id()
for n in xrange(5):
    print next(C)
给予:

A00001
A00002
A00003
A00004
A00005

您可以只使用简单的内置字符串格式:

>>> 'A%05d'%1
'A00001'
>>> 'A{0:05d}'.format(1)
'A00001'
您可以使用内置方法

或者你可以用这样的方法

print "A" + str(1).zfill(5)    # A00001
print "A" + str(100).zfill(5)  # A00100

它是什么语言?->使用标签…你想在99999之后发生什么?我可能会更改起始字母表。我认为我的库存永远不会超过id限制。干杯。对于OP:我相信。格式化是建议的字符串格式化方法。为了向前兼容,更喜欢nextC。@DSM谢谢。有没有一个版本的python可以使用C.next而nextC不能?啊,你说得对。例如,2.4。。和2.5。。似乎是在2.6。
print "A" + str(1).zfill(5)    # A00001
print "A" + str(100).zfill(5)  # A00100
def running_ids(start, end):
    t = start[0]
    low = int(start[1:])
    high = int(end[1:]) + 1
    res = []
    for x in range(low, high):
        res.append(t + '{0:05d}'.format(x))
    return res

print(running_ids('A00001', 'A00005'))