Найти - Пользователи
Полная версия: Операция со списком
Начало » Python для новичков » Операция со списком
1
Seganapa
Есть список
l = [2262, 1750, 1726, 1576]

Нужно на выходе получить измененный таким образом список:

l = [2262-2262, 2262-1750, 1750-1726, 1726-1576]

Т.е. нужно отнять каждый элемент списка от предыдущего (первый отнимается сам от себя). Что-то никак не могу сообразить как перебрать и изменить такой список.

Пробовал range, но видимо что-то не так делаю…
l = [2262, 1750, 1726, 1576]    
for i in range(len(l)):
    print l[i]-l[i+1]

Как здесь отнять от себя первый элемент, видимо условие какое-то нужно добавить…
fata1ex
>>> mylist = [2262, 1750, 1726, 1576]
>>> [0] + [mylist[idx-1] - mylist[idx] for idx in xrange(1, len(mylist))]
[0, 512, 24, 150]
>>> [0] + map(lambda idx: mylist[idx-1] - mylist[idx], xrange(1, len(mylist)))
[0, 512, 24, 150]

Начинать решение задачи надо с адекватной её формулировки:
нужно отнять каждый элемент списка от предыдущего
Что здесь написано, понять невозможно. Здесь даже не описывается, как должен получиться новый список. Отсюда и начинается путаница.

PooH
l = [0] + map(lambda x: x[0]-x[1], zip(l, l[1:]))
Seganapa
Спасибо! Работает!
Seganapa
fata1ex
нужно отнять каждый элемент списка от предыдущего
Что здесь написано, понять невозможно. Здесь даже не описывается, как должен получиться новый список. Отсюда и начинается путаница.

Ответы то правильно даны… Я долго пытался сформулировать задачу, но это оказалось не так-то просто!!!))) Все варианты работают…
fata1ex
Seganapa, ответы даны правильно только из-за примера :) Но если вы не можете описать для себя алгоритм решения задачи на родном языке, вряд ли вас ждет успех в её реализации на языке программирования.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB