2014-11-15 4 views
0

У меня есть список кортежей и вы хотите создать новый список. Элементы нового списка вычисляются с последним элементом нового списка (первый элемент равен 0) и вторым элементом следующего кортежа старого списка.Python - Пройти список без последнего элемента

Чтобы лучше понять:

list_of_tuples = [(3, 4), (5, 2), (9, 1)] # old list 
new_list = [0] 
for i, (a, b) in enumerate(list_of_tuples): 
    new_list.append(new_list[i] + b) 

Так что это решение, но последний элемент нового списка не должен быть рассчитан. Поэтому последний элемент не нужен.

Есть ли прекрасный способ создания нового списка? Мое решение до сих пор с диапазоном, но не выглядит, что приятно:

for i in range(len(list_of_tuples)-1): 
    new_list.append(new_list[i] + list_of_tuples[i][1]) 

Я новичок в Python, так что любая помощь приветствуется.

+0

'new_list [я]' потерпит неудачу, если если new_list не так долго, как 'list_of_tuples [-1] ' –

ответ

2

Вы можете просто использовать slice notation пропустить последний элемент:

for i, (a, b) in enumerate(list_of_tuples[:-1]): 

Ниже демонстрация:

>>> lst = [1, 2, 3, 4, 5] 
>>> lst[:-1] 
[1, 2, 3, 4] 
>>> for i in lst[:-1]: 
...  i 
... 
1 
2 
3 
4 
>>> 
Смежные вопросы