在python中填充具有特定值的列表

MxL*_*evs 18 python list

可能重复:
一些内置用于填充python中的列表

我有一个方法将返回一个包含4个元素的列表(实例变量).另一种方法用于为列表赋值.

但是目前我无法保证列表中有4个元素,所以我想用0填充它.

除了说一个循环之外,有没有办法用0填充它?

for i in range(4 - len(self.myList)):
   self.myList.append(0)

eum*_*iro 26

self.myList.extend([0] * (4 - len(self.myList)))
Run Code Online (Sandbox Code Playgroud)

填充整数时有效.不要用可变对象来做.

另一种可能性是:

self.myList = (self.myList + [0] * 4)[:4]
Run Code Online (Sandbox Code Playgroud)


Sha*_*hin 6

>>> out = [0,0,0,0]   # the "template" 
>>> x = [1,2]
>>> out[:len(x)] = x 
>>> print out
[1, 2, 0, 0]
Run Code Online (Sandbox Code Playgroud)

分配x给切片out相当于:

out.__setitem__(slice(0, len(x)), x)
Run Code Online (Sandbox Code Playgroud)

要么:

operator.setitem(out, slice(0, len(x)), x)
Run Code Online (Sandbox Code Playgroud)


Joh*_*web 5

为什么不创建一些实用程序功能?

>>> 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]
>>> 
Run Code Online (Sandbox Code Playgroud)