在Python中用特定值填充列表
可能重复的问题:
在Python中有没有内置的方法可以填充列表
我有一个方法会返回一个包含4个元素的列表(这是一个实例变量)。
还有另一个方法用来给这个列表赋值。
但是现在我不能保证在请求这个列表的时候它一定有4个元素,所以我想用0来填充它。
除了使用循环,还有其他方法可以用0填充这个列表吗?
for i in range(4 - len(self.myList)): self.myList.append(0)
7 个回答
7
为什么不创建一个小工具函数呢?
>>> def pad(l, content, width):
... l.extend([content] * (width - len(l)))
... return l
...
>>> pad([1, 2], 0, 4)
[1, 2, 0, 0]
>>> pad([1, 2], 2, 4)
[1, 2, 2, 2]
>>> pad([1, 2], 0, 40)
[1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
>>>
11
>>> out = [0,0,0,0] # the "template"
>>> x = [1,2]
>>> out[:len(x)] = x
>>> print out
[1, 2, 0, 0]
把 x
赋值给 out
的一部分,就相当于:
out.__setitem__(slice(0, len(x)), x)
或者:
operator.setitem(out, slice(0, len(x)), x)
40
self.myList.extend([0] * (4 - len(self.myList)))
当你用整数来填充的时候,这个方法是有效的。但如果用可变对象,就不要这样做。
还有另外一种可能性是:
self.myList = (self.myList + [0] * 4)[:4]