可能重复:
一些内置用于填充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)
>>> 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)
为什么不创建一些实用程序功能?
>>> 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)
| 归档时间: |
|
| 查看次数: |
24676 次 |
| 最近记录: |