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