【问题标题】:add leading zeros to a list of numbers in Python在 Python 中的数字列表中添加前导零
【发布时间】:2015-05-14 01:38:54
【问题描述】:

我是 Python 新手。我正在尝试调整列表的格式,如下所示:

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

我想将它们转换为带有前导零的字符串列表:

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

每个元素都有 6 个数字。

我知道一个数字 X,我可以做到:

str(X).zfill(6)

但我不确定如何将其应用于列表。我想在不使用 for 循环的情况下解决这个问题。

有人可以帮忙吗?谢谢。

【问题讨论】:

    标签: python string list format digits


    【解决方案1】:

    list comprehension 中应用相同的zfill 函数,就像这样

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

    或者,您可以使用字符串的format 方法,使用format specifiers,像这样

    >>> ["{: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']
    

    【讨论】:

    • 为了改善您的答案,我会填写列表中的最大长度,而不是硬编码的 6。
    • 今天学到了一些新东西。谢谢!
    • @MalikBrahimi 但 OP 想要 each of the element has 6 digits.
    • @thefourtheye,感谢您的快速回答。这正是我正在寻找的。​​span>
    猜你喜欢
    • 2016-05-16
    • 2017-08-12
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-11
    相关资源
    最近更新 更多