假设我想循环遍历数组并在循环索引中向前和向后索引所有索引,如下所示:
x = np.random.uniform(size=600)
for i in range(len(x)):
dot = np.dot(x[:-i], x[i:])
现在这不起作用,因为x[:-0]
就像x[:0]
那样[]
。
我可以单独处理零情况,但是想知道是否有更多的pythonic方式。
答案 0 :(得分:8)
使用片段结束值-i or None
。如果i
非零,那么它只是-i
,但如果它是0
,则-0
是假的,它会评估并返回第二项{{1} },意思是“运行到序列结束”。这是有效的,因为None
等同于foo[:None]
,当您忽略切片的那个组成部分时它会隐式变为foo[:]
,但明确地传递None
是完全合法的效果。
所以你的新行将是:
None
答案 1 :(得分:2)
为什么不使用长度信息:
length = len(x)
for i in range(length):
dot = np.dot(x[:length-i], x[i:])