[英]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.