我刚刚创建了一个函数来生成给定范围之间的运行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
print running_ids('A00001','A00005')
['A00001','A00002','A00003','A00004','A00005']
答案 0 :(得分:3)
使用generator。这样您就可以根据需要生成数字,而不是一次性存储它们。它还维护计数器的状态,如果您开始构建大型项目并且忘记在索引中添加一个项目,则非常有用。这是一种非常强大的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
答案 1 :(得分:3)
您可以使用简单的内置字符串格式:
>>> 'A%05d'%1
'A00001'
>>> 'A{0:05d}'.format(1)
'A00001'
答案 2 :(得分:1)
您可以使用内置format
方法
print "A" + format(1, "05d") # A00001
print "A" + format(100, "05d") # A00100
或者你可以使用像这样的str.zfill
方法
print "A" + str(1).zfill(5) # A00001
print "A" + str(100).zfill(5) # A00100
答案 3 :(得分:0)
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'))