def tointervals(tlist):
count=0
for i in tlist:
if count == 0:
count = count + 1
yield 0
else:
count = count + 1
yield i - tlist[count -2]
Я проверяю это так:
In [272]: list(tointervals([1,2,3,4,10]))
Out[272]: [0, 1, 1, 1, 6]
Отлично, это именно то, что я искал
Но я хочу сделать это более функционально (яя в основном использую Scala)
Я совершенно запутался в этом, в основном из-за незнания Python.Самое близкое, что я получил, прежде чем сдаться в предельной неразберихе, это:
In [292]: reduce(lambda x,y: (x[0] + [y - x[0][x[1]] ],x[1]+1), [1,2,3,4,10], ([0],0))
Out[292]: ([0, 1, 1, 2, 2, 8], 5)
Что, очевидно, неправильно, но это направление, которое я пытался ... Я глуп, пытаюсь использовать снижение илимогу я просто не кодировать ириску?Будьте нежны, пожалуйста.