FaCoffee
FaCoffee

Reputation: 7909

Create a list of consequential alphanumeric elements

I have

char=str('DOTR')

and

a=range(0,18)

How could I combine them to create a list with:

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

If I combine them in a for loop then I lose the leading zero.

Upvotes: 1

Views: 80

Answers (4)

Chandan Rai
Chandan Rai

Reputation: 10359

can do like this

char = str('DOTR')
a=range(0,18)
b = []
for i in a:
    b.append(char + str(i).zfill(2))
print(b)

Upvotes: 1

willeM_ Van Onsem
willeM_ Van Onsem

Reputation: 476557

Simply use list comprehension and format:

mylist = ['DOTR%02d'%i for i in range(18)]

Or given that char and a are variable:

mylist = ['%s%02d'%(char,i) for i in a]

You can, as @juanpa.arrivillaga also specify it as:

mylist = ['{}{:02d}'.format(char,i) for i in a]

List comprehension is a concept where you write an expression:

[<expr> for <var> in <iterable>]

Python iterates over the <iterable> and unifies it with <var> (here i), next it calls the <expr> and the result is appended to the list until the <iterable> is exhausted.

Upvotes: 1

Sнаđошƒаӽ
Sнаđошƒаӽ

Reputation: 17552

You can do it using a list comprehension like so:

>>> 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']

Upvotes: 2

juanpa.arrivillaga
juanpa.arrivillaga

Reputation: 95872

Use 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
>>>

And if you want a list:

>>> 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']
>>>

Upvotes: 2

Related Questions