Я рассмотрел здесь список и нашел решение для этого.Доступ к предыдущему элементу в понимании списка
Ближайший Я пришел, это вопросы, которые совет, используя enumerate()
, итерации в понимании списка.
Что я хотел бы сделать, это получить доступ к предыдущему элементу в понимании списка. The context is this question on another StackExchange site.
В принципе, если я получаю эту строку от stdin
- 4,6,+2,+8
, я хотел бы вывести массив, который является целым числом числа, или числом плюс значение предыдущего элемента. В данном случае последний массив: 4,6,8,16
- или 4,6,6+2,(6+2)+8
. Переход слева направо с помощью массива и цикл для его тривиального генерации, но мне любопытно узнать, можно ли это сделать в одном понимании списка.
Что касается того, что у меня есть:
from sys import*
s=argv[1].split(',')
for i in range(len(s)):
s[i]=eval(`s[i-1]`*(s[i][0]=='+')+s[i])
print s
который печатает правильный результат, однако следующий список понимание не делает:
s=argv[1].split(',')
s=[eval(s[i-1]*(x[0]=='+')+x) for i,x in enumerate(s)]
print s
Какие результаты в:
[4, 6, 8, 10]
Какие является равным 4, 6, +2+6, +2+8
.
То, что я хотел бы быть в состоянии сделать, наконец, что-то вдоль линий:
s=[eval(PRIOR_VALUE*(x[0]=='+')+x) for x in argv[1].split(',')]
Так можно легко получить доступ к предварительно вычисленному элементу списка понимания в том же списке понимании?
Это может быть сложно .. – aIKid