我有
char=str('DOTR')
和
a=range(0,18)
我如何将它们组合起来创建一个列表:
mylist=['DOTR00','DOTR01',...,'DOTR17']
如果我将它们组合在一个for循环中,那么我将失去前导零。
答案 0 :(得分:2)
使用zfill
:
>>> string = "DOTR"
>>> for i in range(0, 18):
... print("DOTR{}".format(str(i).zfill(2)))
...
DOTR00
DOTR01
DOTR02
DOTR03
DOTR04
DOTR05
DOTR06
DOTR07
DOTR08
DOTR09
DOTR10
DOTR11
DOTR12
DOTR13
DOTR14
DOTR15
DOTR16
DOTR17
>>>
如果你想要一个清单:
>>> my_list = ["DOTR{}".format(str(i).zfill(2)) for i in range(18)]
>>> my_list
['DOTR00', 'DOTR01', 'DOTR02', 'DOTR03', 'DOTR04', 'DOTR05', 'DOTR06', 'DOTR07', 'DOTR08', 'DOTR09', 'DOTR10', 'DOTR11', 'DOTR12', 'DOTR13', 'DOTR14', 'DOTR15', 'DOTR16', 'DOTR17']
>>>
答案 1 :(得分:2)
你可以使用像这样的列表理解来做到这一点:
>>> mylist = [char+'{0:02}'.format(i) for i in a]
>>> mylist
['DOTR00', 'DOTR01', 'DOTR02', 'DOTR03', 'DOTR04', 'DOTR05', 'DOTR06', 'DOTR07', 'DOTR08', 'DOTR09', 'DOTR10', 'DOTR11', 'DOTR12', 'DOTR13', 'DOTR14', 'DOTR15', 'DOTR16', 'DOTR17']
答案 2 :(得分:1)
只需使用列表理解和格式:
mylist = ['DOTR%02d'%i for i in range(18)]
或者假设char
和a
是变量:
mylist = ['%s%02d'%(char,i) for i in a]
你可以,因为@ juanpa.arrivillaga也将其指定为:
mylist = ['{}{:02d}'.format(char,i) for i in a]
列表理解是一个写一个表达式的概念:
[<expr> for <var> in <iterable>]
Python迭代<iterable>
并将其与<var>
(此处为i
)统一,然后调用<expr>
,结果将附加到列表中,直到{ {1}}已经筋疲力尽了。
答案 3 :(得分:1)
可以这样做
char = str('DOTR')
a=range(0,18)
b = []
for i in a:
b.append(char + str(i).zfill(2))
print(b)