私はPythonを初めて使用します。以下のようなリストのフォーマットを調整しようとしています。
data=[1,10,313,4000,51234,123456]
そして、それらを先行ゼロのある文字列のリストに変換したいと思います。
result=['000001','000010','000313','004000','051234','123456']
各要素は6桁です。
私は単一の数Xについて知っています、私はすることができます:
str(X).zfill(6)
しかし、これをリストに適用する方法がわかりません。 forループを使用せずにこの問題を解決したいと思います。
誰でも助けることができますか?ありがとう。
同じ 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を使用している場合は、次のように map
とformatter
関数を使用できます。
>>> map(formatter, data)
['000001', '000010', '000313', '004000', '051234', '123456']
Python 3.xを使用している場合、 map
は反復可能なmap
オブジェクトを返します。したがって、明示的に作成する必要があります。このようなリスト
>>> list(map(formatter, data))
['000001', '000010', '000313', '004000', '051234', '123456']