假设我想循环遍历数组并在循环索引中向前和向后索引所有索引,如下所示:
x = np.random.uniform(size=600)
for i in range(len(x)):
dot = np.dot(x[:-i], x[i:])
Run Code Online (Sandbox Code Playgroud)
现在这不起作用,因为x[:-0]
就像x[:0]
它给出的那样[]
.我可以单独处理零情况但是想知道是否有更多的pythonic方式来做这件事.
使用切片值的结尾-i or None
.如果i
是非零,那么它只是-i
,但如果它是0
,那么-0
是假的,它评估并返回第二项None
,这意味着"运行到序列结束".这是有效的,因为foo[:None]
相当于foo[:]
,当你忽略切片的那个组成部分时它会None
隐含,但是None
显式传递是完全合法的,具有相同的效果.
所以你的新行将是:
dot = np.dot(x[:-i or None], x[i:])
Run Code Online (Sandbox Code Playgroud)