Bas*_*asj 2 python arrays numpy list scipy
使用Python列表
L=[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
我希望L[m] = 0如果m不同0,1,2,3,即:
...
L[-2]=0
L[-1]=0
L[0]=1
L[1]=2
L[2]=3
L[3]=4
L[4]=0
L[5]=0
Run Code Online (Sandbox Code Playgroud)
和
L[-2:2] = [0, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
这不适用于经典列表或数组.这样做的好方法是什么?
编辑:这是一个很好的解决方案(由一个答案给出):
class MyList(list):
def __getitem__(self, index):
return super(MyList, self).__getitem__(index) if index >= 0 and index < len(self) else 0
Run Code Online (Sandbox Code Playgroud)
但我仍然无法拥有
L[-2:2] = [0, 0, 1, 2]
Run Code Online (Sandbox Code Playgroud)
你可以转换L为dict:
In [1]: L=[1,2,3,4]
In [2]: D=dict([(x, y) for x, y in enumerate(L)])
In [3]: [D.get(i, 0) for i in xrange(-3, 5)]
Out[3]: [0, 0, 0, 1, 2, 3, 4, 0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
405 次 |
| 最近记录: |