Проблемы с индексами в списках Python - PullRequest
0 голосов
/ 15 января 2012
for i in list:
    j = i + 1
    print i - j

Это будет распечатано в -1 раз больше list

То, что я хотел сделать, это напечатать разницу между значением i и следующим в списке.

Я чист?

Ответы [ 3 ]

5 голосов
/ 15 января 2012
for i in list:

связывает i с элементами list, а не с его индексами.Возможно, вы имели в виду

for i in xrange(len(list)):

или

for i, _ in enumerate(list):

Затем получите элемент по индексу i с list[i].

(И, пожалуйста, не звонитесписок list; это имя встроенной функции Python.)

4 голосов
/ 15 января 2012

В отличие от JavaScript, повторение последовательности в Python дает элементы, а не индексы.

for i, j in zip(L, L[1:]):
  print j - i
1 голос
/ 15 января 2012

Попробуйте это:

lst = [1, 2, 3, 4]

for i in xrange(1, len(lst)):
    print lst[i-1] - lst[i]

Обратите внимание, что в строке for i in list, i это элемент из list, а не индекс. В приведенном выше коде i действительно является индексом. Кроме того, плохая идея вызывать переменную list (Python использует это имя для чего-то другого). Я переименовал его в lst.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...