试图在python中添加零但得到奇怪的结果

时间:2015-04-08 11:35:38

标签: python

我正在尝试获取字符串列表,并在前面添加一些零,以便它们的长度相同。我有这个:

def parity(binlist):
    print(binlist)
    for item in binlist:
        if len(item)==0:
            b='000'
        elif len(item)==1:
            b='00{}'.format(item)
        elif len(item)==2:
            b='0{}'.format(item)
        binlist.remove(item)
        binlist.append(b)
        return binlist

这是binlist:

['1', '10', '11', '11']    

我希望在运行它之后得到它:

['001', '010', '011', '011']

但我明白了:

['10', '11', '11', '001']

这真让我困惑。 感谢您的帮助。

5 个答案:

答案 0 :(得分:4)

试试这个:

>>> n = "7"
>>> print n.zfill(3)
>>> "007"

这样你就会有一个3个字符串(如果数字小于1000)

http://www.tutorialspoint.com/python/string_zfill.htm

答案 1 :(得分:2)

本机字符串格式化操作允许您在没有遇到任何麻烦的情况下执行此操作。以下是一个示例。

x = ['1', '10', '11', '11']    

print ["{:>03s}".format(t) for t in x]
['001', '010', '011', '011']

答案 2 :(得分:1)

这是因为您在使用for循环遍历列表时删除列表中的元素。这样做不会遍历完整列表。您可以使用while循环来解决此问题。

答案 3 :(得分:0)

您可以使用zfill在单行中执行此操作:

>>> map(lambda binlist_item: binlist_item.zfill(3), ['1', '10', '11', '11'] )
['001', '010', '011', '011']

答案 4 :(得分:0)

为列表中的每个项目填写零

binlist = [i.zfill(3) for i in binlist]