簡體   English   中英

單行增長金額列表?

[英]List of growing sum as a one-liner possible?

我想總結一個整數的迭代,並得出每個元素的增長總和。 使用迭代編程,這很簡單:

def growingSum(elements):
  sum = 0
  for element in elements:
    sum += element
    yield sum

但是,是否可以在不使用變量的情況下以功能方式完成此操作,因此很可能是使用理解的單行代碼?

在Python3.2 +上,您可以使用itertools.accumulate

>>> from itertools import accumulate
>>> list(accumulate(range(10)))
[0, 1, 3, 6, 10, 15, 21, 28, 36, 45]

從技術上講,此生成器表達式可以工作:

((globals().__setitem__('__acc', globals()['__acc'] + x), globals()['__acc'])[1] for x in (globals().__setitem__('__acc', 0), iterable)[1])

(我不確定這是否可移植。它可能依賴於實現定義的行為。)

或者,如果可能引入一個本地:

v = [0]
((v.append(v.pop() + x), v[0])[1] for x in iterable)

在任何情況下,使用這種密碼被抓的人都會被槍殺。 這是一個巨大的漏洞,是對可讀性和常識的侮辱,沒有絲毫的正當理由或吸引力。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM