Python:如何在不先创建整个列表的情况下计算列表的总和?

Tro*_*yvs 5 python yield sum list

通常我们必须 (1) 声明一个列表 (2) 使用以下方法计算该列表的总和sum()

\n

但现在我希望指定一个以 1 开头、间隔为 4、100 个元素的列表,如下所示:

\n
[1,5,9,13,17,21,25,29,33,37,\xe2\x80\xa6]\n
Run Code Online (Sandbox Code Playgroud)\n

我不想\xe2\x80\x99 不想涉及数学公式,所以

\n
\n

(1) 如何在不声明此列表的情况下获得总和?

\n

(2) 如何快速求出列表中第101个元素到第200个元素的和?

\n
\n

MSe*_*ert 3

只需使用即可itertools.count获取计数器并itertools.islice获取所需数量的元素(您可以迭代这些实例,但它们不会创建列表!):

>>> from  itertools import count, islice
>>> sum(islice(count(1, step=4), 100))  # get the first 100 elements and sum them
19900
Run Code Online (Sandbox Code Playgroud)

islice支持启动/停止:

>>> sum(islice(count(1, step=4), 101, 200))  # 101st element to 200th
59499
Run Code Online (Sandbox Code Playgroud)