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

2024-03-28 11:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个问题,就是如何为一个系统中的现有元素添加新的价值列表。用于举个例子

myList = ["0","12","221","3344"]

我设置了一个条件,如果列表中每个元素的长度小于4,程序将在每个元素的前面加上值“0”元素。也许吧应该是这样的

newList = ["0000","0012","0221","3344"]

现在,我已经完成了下面的一些示例代码

x = ["0","1"]
    if len(x) < 4:
        x.insert(0,"0")
print(x)

输出是这样的

["0","0","1"]

我试着添加/更改下面这样的行

x = ["0","1"]
  for i in x:
    if len(i) < 4:
        i.insert(0,"0")
print(x)

但我说得不对

'str' object has no attribute 'insert'.

我是不是漏掉了什么,还是有别的办法? 谢谢你的回答。你知道吗


Tags: 代码程序元素示例列表lenif系统
3条回答

通过列表理解:

>>> 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的特殊情况,可以使用^{}

>>> myList = ["0","12","221","3344"]
>>> [x.zfill(4) for x in myList]
['0000', '0012', '0221', '3344']

您可以使用内置的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)

输出

['0000', '0012', '0221', '3344']

相关问题 更多 >