切片 python 列表超出其长度

slicing python list beyond its length

我必须将 Python list/numpy 数组从索引切片到 -dx 和 +dx。 其中 dx 是常数。例如: (其中包含1的position/index只是为了说明,作为中心索引)。

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]

所以我做了这样的事情,以防止空 list/array,说 n 是中心索引:

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

虽然上面的方法没问题。 原代码比较复杂,到处都要放这个if...#complicated version#

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

谢谢!

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

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