Python для цикла создать список - PullRequest
0 голосов
/ 16 сентября 2018

Хорошо, ребята, почему этот простой цикл for не может заполнить список?Вот что у меня есть:

axx = []
for i in range(1,7):
  axx.append('ax'+str(i))
  print(axx[i])

Я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "./bin_data2.py", line 57, in <module>
    print(axx[i])
IndexError: list index out of range

Это должно быть довольно просто и понятно, не так ли?Извините, пришёл из Фортрана!

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Списки индексируются с нуля. Ваша петля зацикливается на [1, 2, 3, 4, 5, 6] или шесть раз. Ваш список axx в итоге получит список длиной шесть с индексами от нуля до пяти ([0, 1, 2, 3, 4. 5]). Но вы получаете доступ к нему как i, что на единицу больше, чем текущий индекс. Поэтому вам нужно будет вычесть один из них, чтобы получить значение в правильном положении.

Так что не используйте range(1,7), используйте range(6).

0 голосов
/ 16 сентября 2018

Вам нужно i-1 во время печати. Массив добавляется, начиная с 0, а i начинается с 1. Итак, сначала append, есть элемент в 0, но i имеет значение 1:

print(axx[i-1])

Если вы посмотрите на результат из:

print(list(range(1,7)))

Выход:

[1, 2, 3, 4, 5, 6]

Или вы можете изменить диапазон на range(6) вместо range(1,7). Тем не менее, он будет печатать со значением 0. В этом случае вы хотите axx.append('ax'+str(i+1))

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