用特定值填充python中的列表

用特定值填充python中的列表,python,list,Python,List,可能重复: 我有一个方法,它将返回一个包含4个元素的列表(实例变量)。 另一种方法用于为列表指定值 但目前我不能保证列表在被要求时有4个元素,所以我想用0来填充它 除了循环之外,还有什么方法可以用0来填充它吗 for i in range(4 - len(self.myList)): self.myList.append(0) 对于范围内的i(4-len(self.myList)): self.myList.append(0) 这在使用整数填充时有效。不要对可变对象执行此操作 另一种可能

可能重复:

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

但目前我不能保证列表在被要求时有4个元素,所以我想用0来填充它

除了循环之外,还有什么方法可以用0来填充它吗

for i in range(4 - len(self.myList)): self.myList.append(0) 对于范围内的i(4-len(self.myList)): self.myList.append(0) 这在使用整数填充时有效。不要对可变对象执行此操作

另一种可能性是:

self.myList = (self.myList + [0] * 4)[:4]

一个骇人的附加和剪切解决方案:

>>> x = [1,2]
>>> (x + [0] * 4)[:4]
[1, 2, 0, 0]
或:

另一种方法,使用:


为什么不创建一个小的实用功能呢

>>> 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]
>>> 
x
分配给
out
的一个片相当于:

out.__setitem__(slice(0, len(x)), x)
或:


正确的。最初我想添加一些类似于
list=(list+[0代表范围(4)])[:4]
的内容,然后意识到它的工作更简单。你真的不应该使用
list
作为你的var名称。这将覆盖内置的
list()
。对我来说,除了@ShawnChin所说的变量名之外,这是最好的一行(我已经在变量中有了我的列表,并在之后对其进行后期处理以完成它),很容易理解。谢谢。你们都是对的,我现在更改了变量名。
>>> x = [1,2]
>>> (x + [0] * 4)[:4]
[1, 2, 0, 0]
>>> (x + [0] * (4 - len(x)))
[1, 2, 0, 0]
from itertools import repeat
self.my_list.extend(repeat(0, 4 - len(self.my_list)))
>>> 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]
>>> 
>>> out = [0,0,0,0]   # the "template" 
>>> x = [1,2]
>>> out[:len(x)] = x 
>>> print out
[1, 2, 0, 0]
out.__setitem__(slice(0, len(x)), x)
operator.setitem(out, slice(0, len(x)), x)