2015-03-12 16 views
7

Ich bin neu in Python. Ich versuche, das Format einer Liste einzustellen, wie unten aussieht:führende Nullen zu einer Liste von Zahlen in Python hinzufügen

data=[1,10,313,4000,51234,123456] 

und ich mag sie auf eine Liste von Strings mit führenden Nullen konvertieren:

result=['000001','000010','000313','004000','051234','123456'] 

jedes des Elements 6 Ziffern.

ich für eine einzelne Zahl X weiß, ich kann tun:

str(X).zfill(6) 

aber ich bin nicht sicher, wie dies zu einer Liste anzuwenden. Ich möchte dieses Problem lösen, ohne eine for-Schleife zu verwenden.

Jeder könnte helfen? Vielen Dank.

Antwort

13

Wenden Sie die gleiche zfill Funktion in einem list comprehension, wie diese

>>> [str(item).zfill(6) for item in data] 
['000001', '000010', '000313', '004000', '051234', '123456'] 

Alternativ Sie die format Methode der Zeichenfolge verwenden können, mit format specifiers, wie dieser

>>> ["{:06d}".format(item) for item in data] 
['000001', '000010', '000313', '004000', '051234', '123456'] 

Wenn Sie das tun wollen die Formatierung häufiger, dann können Sie das in einer Variablen, wie diese

>>> formatter = "{:06d}".format 
>>> [formatter(item) for item in data] 
['000001', '000010', '000313', '004000', '051234', '123456'] 
01 speichern

Wenn Sie Python 2.x verwenden, dann können Sie map und die formatter Funktion verwenden, wie diese

>>> map(formatter, data) 
['000001', '000010', '000313', '004000', '051234', '123456'] 

Wenn Sie Python 3.x verwenden, map ein iterable map Objekt zurückgibt. So müssen Sie explizit eine Liste erstellen, wie dies

>>> list(map(formatter, data)) 
['000001', '000010', '000313', '004000', '051234', '123456'] 
+0

Ihre Antwort zu verbessern, ich auf die maximale Länge in der Liste füllen würde, anstatt ein hartkodierte 6. –

+1

etwas Neues gelernt heute. Vielen Dank! – ProfOak

+0

@MalikBrahimi Aber OP will 'jedes Element hat 6 Ziffern.' – thefourtheye

Verwandte Themen