将python列表切片超出其长度

时间:2021-03-19 15:41:58

标签: python list numpy slice numpy-slicing

我必须将 Python 列表/numpy 数组从索引切片到 -dx 和 +dx。 其中 dx 是常数。例如: (包含1的位置/索引仅用于说明,作为中心索引)。

A = [0, 0, 0, 0, 1, 0, 0, 0, 0]
dx=3
print(A[4-dx: 4+dx+1])  # 4 is the position of '1'

>>>[0, 0, 0, 1, 0, 0, 0]  

但是对于这种情况,

B = [0, 1, 0, 0, 0 ,0, 0 ,0, 0]
print(B[1-dx: 1+dx+1])
>>>[]  # because 1-dx <0. 

但我需要从案例 B 中得到 [0, 1, 0, 0, 0]

所以我做了这样的事情,以防止空列表/数组,说 n 是中心索引:

if n-dx <0:
    result= B[:n+dx+1]

虽然上面的方法效果很好。 原始代码相当复杂,我不得不把这个if...#complicated version#放在任何地方。

还有其他办法吗?也许我错过了什么。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用 max() 函数将索引绑定到 0

print(A[max(0,4-dx): 4+dx+1])