Python 如何在列表中的每个元素前面添加新值?

Python 如何在列表中的每个元素前面添加新值?,python,list,Python,List,我有一个关于向列表中的现有元素添加新值的问题 myList = ["0","12","221","3344"] 我设置了一个条件,若列表中每个元素的长度小于4,程序将在每个元素的前面添加值“0” newList = ["0000","0012","0221","3344"] ["0","0","1"] 现在,我已经完成了如下示例代码 x = ["0","1"] if len(x) < 4: x.insert(0,"0") print(x) x = ["0",

我有一个关于向列表中的现有元素添加新值的问题

myList = ["0","12","221","3344"]
我设置了一个条件,若列表中每个元素的长度小于4,程序将在每个元素的前面添加值“0”

newList = ["0000","0012","0221","3344"]
["0","0","1"]
现在,我已经完成了如下示例代码

x = ["0","1"]
    if len(x) < 4:
        x.insert(0,"0")
print(x)
x = ["0","1"]
  for i in x:
    if len(i) < 4:
        i.insert(0,"0")
print(x)
我尝试添加/更改一些行,如下所示

x = ["0","1"]
    if len(x) < 4:
        x.insert(0,"0")
print(x)
x = ["0","1"]
  for i in x:
    if len(i) < 4:
        i.insert(0,"0")
print(x)
我是不是错过了什么,还是有其他方法?
谢谢您的回答。

您可以使用内置的
map
功能将
lambda
功能应用于列表中的每个项目,如下所示:

myList = ['0', '12', '221', '3344']
answer = map(lambda x: '0'*(4-len(x))+x if len(x) < 4 else x, myList)
print(answer)

通过列表理解:

>>> myList = ["0","12","221","3344","11111111111"]
>>> ['0'*(4 - len(x)) + x for x in myList]
['0000', '0012', '0221', '3344', '11111111111']
请注意,
'0'*y
是空字符串,如果y小于零,我将最后一个值添加到
myList
中以显示这一点。这就是为什么理解中不需要if/else

编辑:
str.rjust
是另一个选项:

>>> [x.rjust(4, '0') for x in myList]
['0000', '0012', '0221', '3344', '11111111111']

对于在字符串开头添加0的特殊情况,可以使用:

这里有一个解决方案:

def paditem(item, length):
    return item + ('0' * (length - len(item))) if len(item) < length else item

def padlist(somelist, length):
    return map(lambda x: paditem(x, length), somelist)

# Test Code:
myList = ["0","12","221","3344"]
results = padlist(myList, 4)
for result in results:
    print result
def padpitem(项目,长度):
如果len(item)
当您使用
x.insert()
时,您正在将新值插入到列表x中,而不是该列表中的项目中。您可能希望将x中的项逐个替换为您希望它们的新值。这是最好的解决方案(在字符串始终为数字且填充值始终为零的情况下)。
zfill
还可以相应地处理负号和加号
i.e.)'-350'。zfill(5)==>'-0350'
def paditem(item, length):
    return item + ('0' * (length - len(item))) if len(item) < length else item

def padlist(somelist, length):
    return map(lambda x: paditem(x, length), somelist)

# Test Code:
myList = ["0","12","221","3344"]
results = padlist(myList, 4)
for result in results:
    print result