擅长:python、mysql、java
<p><code>indexable[n]</code>是获取<code>indexable</code>的索引<code>n</code>中的值的方法。由于元组是可索引的集合(它们定义了<code>__getitem__</code>),因此将得到该元组的零索引和一个索引(分别是第一个和第二个值)</p>
<p>在不再有效的语法中可以更好地理解这一点:</p>
<pre><code>lambda (s1, s2), i: (s2, p*s2 + q*s1 + r)
</code></pre>
<hr/>
<p>正如您正确的直觉所示,<code>accumulate([x1, x2, x3], fn)</code>返回无穷级数<code>[x1, fn(x1, x2), fn(x2, fn(x1, x2)), ...]</code><code>fn</code>在本例中是一个具有签名的函数:</p>
<pre><code>def fn(last_last_value, last_value)
</code></pre>
<p><a href="https://docs.python.org/3/library/itertools.html?highlight=itertools%20accumulate#itertools.accumulate" rel="nofollow noreferrer">The docs</a>可能用<code>operator.add</code>(又称<code>+</code>)最清楚地显示了这一点</p>
<pre><code>def accumulate(iterable, func=operator.add):
'Return running totals'
# accumulate([1,2,3,4,5]) > 1 3 6 10 15
# accumulate([1,2,3,4,5], operator.mul) > 1 2 6 24 120
it = iter(iterable)
try:
total = next(it)
except StopIteration:
return
yield total
for element in it:
total = func(total, element)
yield total
</code></pre>