创建相应的字母数字元素列表

时间:2017-01-20 17:42:17

标签: python string list

我有

char=str('DOTR')

a=range(0,18)

我如何将它们组合起来创建一个列表:

mylist=['DOTR00','DOTR01',...,'DOTR17']

如果我将它们组合在一个for循环中,那么我将失去前导零。

4 个答案:

答案 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)]

或者假设chara是变量:

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)