我有一个关于向列表中的现有元素添加新值的问题。例如,如果我有
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'.
我在这里错过了什么或有其他办法吗? 谢谢你的回答。
答案 0 :(得分:6)
对于在字符串开头添加0的特殊情况,您可以使用zfill
:
>>> myList = ["0","12","221","3344"]
>>> [x.zfill(4) for x in myList]
['0000', '0012', '0221', '3344']
答案 1 :(得分:3)
您可以使用内置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']
答案 2 :(得分:3)
列表理解:
>>> myList = ["0","12","221","3344","11111111111"]
>>> ['0'*(4 - len(x)) + x for x in myList]
['0000', '0012', '0221', '3344', '11111111111']
请注意,如果y小于零,则'0'*y
为空字符串,我将最后一个值添加到myList
以显示此信息。这就是为什么你在理解中不需要if / else。
编辑:str.rjust
是另一种选择:
>>> [x.rjust(4, '0') for x in myList]
['0000', '0012', '0221', '3344', '11111111111']
答案 3 :(得分:1)
这是一个解决方案:
<MKIconToggle checked={checked}
onCheckedChange={change => changeState(change.checked)}>
<Image source='img1'/>
<Image state_checked={true} source='img2'/>
</MKIconToggle>;