假设我想循环遍历一个数组,并在循环中正向和反向索引该数组的所有索引,如下所示:
x = np.random.uniform(size=600)
for i in range(len(x)):
dot = np.dot(x[:-i], x[i:])
现在这不起作用,因为x[:-0]
就像x[:0]
一样,会得到[]
。
我可以分别处理零的情况,但想知道是否有更Pythonic的方法。
True
和False
,你只关心一个值是否为真或假以进行布尔值评估;truthy或falsy清楚地表明你关心的是含义,而不是具体值。 - ShadowRangerlen(x)
并将其存储下来;调用内置函数的开销非常高,尽管它们实际上做的工作很少)。-i或None
仅在常见情况下增加了一个隐式布尔运算(除了pass
语句之外,这是CPython可以做的最便宜的事情),而len(x) - i
则对每个使用都添加了内置查找、内置调用和减法操作(如果你预先缓存,则本地加载和减法成本至少会多花费一点点)。 - ShadowRanger