В шкале от 0 до 10 того, насколько грязно вы пытаетесь там, я бы сказал, что это 11.
Я бы посоветовал вам взглянуть на методы настройки поиска элементов в модели данных - https://docs.python.org/3/reference/datamodel.html#emulating-container-types
Затем, прочитав некоторую информацию о collection.abc и реализуйте свой класс, наследующий от collections.MutableSequence
- если последовательность будет соответствовать вашим потребностям - https://docs.python.org/3/library/collections.abc.html
Тренировка в интерактивной консоли. Когда вы знакомы с ним, взглянуть на рекомендации по стилю кодирования в PEP-8 было бы неплохо - имя класса, например Linked_list
, экземпляры которого содержат атрибут с именем LinkedList
, заставит глаза большинства Pythonistas кровоточить - что возможно, это причина, по которой никто не позаботился о том, чтобы обратиться к вам. - https://www.python.org/dev/peps/pep-0008/.
Все это говорит о том, что я до сих пор не могу понять, что вы пытаетесь сделать - либо в целом, с помощью "связного списка", либо, в частности, в методе InsertionE
.
Само понятие «связанный список» имеет смысл в языках, где нужно вручную управлять расположением объектов в памяти. Объект Pyhton «list», хотя и не является связанным списком, достаточно эффективен, чтобы покрыть большинство случаев использования, которые можно было бы иметь со связанными списками, но для алогритов, которые потребовали бы большого количества вставок в середине списка. Затем можно легко создать структуру данных «связанный список» в Python, реализовав интерфейс «collection.abc.MutableSequence» и имея класс «Node» для хранения ссылок на предыдущие / следующие объекты.
Кроме того, для реальных двумерных типов данных вам, вероятно, будет гораздо лучше использовать внешнюю библиотеку Python. Ничто из того, что вы могли бы реализовать с нуля, не приблизилось бы даже к производительности и надежности этого проекта (если, конечно, у вас нет ресурсов, достаточных для более чем 30-летней оптимизации числовых вычислений)
Все, что сказал, что я все еще могу сказать об этом коде, это то, что метод .index
из списков, которые вы пытаетесь использовать, по-видимому, для определения «адреса строки» в вашей структуре данных необходимо точное соответствие - так, он не сможет найти ничего по первому элементу кортежей, содержащихся в списке. Но я действительно не могу понять, что он должен делать по вашему описанию и коду в этом вопросе, чтобы предлагать какие-либо предложения, кроме как "сделать паузу, изучить немного больше языка, начать все сначала". К сожалению.
Но, может быть, в зависимости от того, что вы пытаетесь сделать там, может быть, вам также может пригодиться простой dict
- проверьте возможности dict
перед тем, как все переделывать, если вы спешите.