在for循环

时间:2017-03-08 14:52:34

标签: python numpy

假设我想循环遍历数组并在循环索引中向前和向后索引所有索引,如下所示:

x = np.random.uniform(size=600)
for i in range(len(x)):
    dot = np.dot(x[:-i], x[i:])

现在这不起作用,因为x[:-0]就像x[:0]那样[]。 我可以单独处理零情况,但是想知道是否有更多的pythonic方式。

2 个答案:

答案 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:])