Трудно сказать, что вы пытаетесь сделать здесь, но какой тип данных data
? Похоже, вы не справляетесь с оператором try
(хорошее использование try / кроме обработки исключений!), Поэтому я думаю, что проблема заключается в том, как вы индексируете элементы (d
) в data
. Подумайте об этом: если data
не существует (то есть вы не инициализировали его в своем коде для использования вашей программой), как вы можете попытаться проиндексировать его позже? Кроме того, странно, что вы не получаете NameError
, поскольку я не вижу, чтобы data
был определен нигде, если вы не обрезали то, что было определено ранее (если мои глаза не обманули меня).
Общие принципы программирования:
- Итерируемые объекты:
String
, List
, Dictionary
и др. c ... - Не повторяемые объекты :
Integer
, Float
, Boolean
, et c ... (в зависимости от языка программирования)
Итерируемые типы данных - это те, которые можно индексировать с помощью скобочных обозначений ([]
) так что в любом случае вам нужно знать типы ваших переменных, а затем использовать правильные «процессы» для работы с ними. Поскольку вы индексируете элементы в data
, тип данных data
, следовательно, также должен быть итеративным.
В общем, IndexError
означает, что вы пытались получить доступ / индексировать элемент в списке, например, но этот элемент не существует. Поэтому я думаю, что попытка создать строку И проиндексировать элемент в несуществующем объекте приводит к этой ошибке.
Вот что, я думаю, поможет:
Если бы я мог видеть, где вы определили data
, я мог бы сказать вам, где вы можете пойти не так, но сейчас я могу только порекомендовать вам вернуться и посмотреть, проиндексировали ли вы элемент в d
в data
, который не существует.
Пример (я предполагаю, data
- это список для ясности):
>>> data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> data[0] # index a list in d in data
[1, 2, 3]
>>> data[0][1]
2
# If you try to access an index in data that doesn't exist:
>>> data[3]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
Я, вероятно, переобъяснил, так что я просто закончу это здесь. Вышеприведенная реализация должна была дать вам представление о том, как правильно получить доступ к списку в списке и когда это не сделано должным образом, что может произойти. Надеюсь, это понятно!