web-dev-qa-db-ja.com

Python)の数値リストに先行ゼロを追加します

私はPythonを初めて使用します。以下のようなリストのフォーマットを調整しようとしています。

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

そして、それらを先行ゼロのある文字列のリストに変換したいと思います。

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

各要素は6桁です。

私は単一の数Xについて知っています、私はすることができます:

str(X).zfill(6)

しかし、これをリストに適用する方法がわかりません。 forループを使用せずにこの問題を解決したいと思います。

誰でも助けることができますか?ありがとう。

11
user2854008

同じ zfill 関数を リスト内包 にこのように適用します

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

または、次のように、文字列の format メソッドを フォーマット指定子 とともに使用することもできます。

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

より頻繁にフォーマットを行う場合は、次のように変数に格納できます。

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

Python 2.xを使用している場合は、次のように mapformatter関数を使用できます。

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

Python 3.xを使用している場合、 map は反復可能なmapオブジェクトを返します。したがって、明示的に作成する必要があります。このようなリスト

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