У меня есть список кортежей, каждый из которых имеет длину элемента. Я использую следующий код для вычисления смещения элемента в зависимости от длины более ранних элементов.Использование функциональной формы, когда элемент списка зависит от предыдущих элементов
import pprint
recordInfo = [(3,), (4,), (1,), (2,)] # List of lengths
# Calculate and add offsets
recordSize = 0
for index, info in enumerate(recordInfo):
recordInfo[index] = info + (recordSize,) # Replace with new tuple with offset
recordSize += info[0] # Calculate next offset
pprint.pprint(recordInfo)
Выход
[(3, 0), (4, 3), (1, 7), (2, 8)]
Есть ли способ, чтобы сделать петлю в функциональной форме, как список понимание? Я не могу понять, как избежать временной переменной recordSize
, что делает невозможным?
вы на Python 2 или 3? У Python 3 есть ['itertools.accumulate'] (https://docs.python.org/3/library/itertools.html#itertools.accumulate), который отлично решает вашу проблему. – user2357112
@ user2357112 Python 3. – user694733