Ошибки индексирования
при работе со списками
59
ПРИМЕЧАНИЕ
Python подсчитывает элементы списка, начиная с 1, поэтому при определении длины списка оши-
бок «смещения на 1» уже быть не должно .
УПРАЖНЕНИЯ
3-8 . Повидать мир: вспомните хотя бы пять стран, в которых вам хотелось бы побывать .
• Сохраните названия стран в списке . Проследите за тем,
чтобы список не хранился
в алфавитном порядке .
• Выведите список в исходном порядке . Не беспокойтесь об оформлении списка, просто
выведите его как обычный список Python .
• Используйте функцию sorted() для вывода списка в алфавитном порядке без измене-
ния списка .
• Снова выведите список,
чтобы показать, что он по-прежнему
хранится в исходном
порядке .
• Используйте функцию sorted() для вывода списка в обратном алфавитном порядке
без изменения порядка исходного списка .
• Снова выведите список, чтобы показать, что исходный порядок не изменился .
• Измените порядок элементов вызовом reverse() . Выведите список, чтобы показать,
что элементы следуют в другом порядке .
• Измените порядок элементов повторным вызовом reverse() . Выведите список, чтобы
показать, что список вернулся к исходному порядку .
• Отсортируйте список в алфавитном порядке вызовом sort() . Выведите список, чтобы
показать, что элементы следуют в другом порядке .
• Вызовите sort() для перестановки элементов списка в обратном алфавитном порядке .
Выведите список, чтобы показать, что порядок элементов изменился .
3-9 . Количество гостей: в одной из программ из упражнений с 3-4 по 3-7 используйте len()
для вывода
сообщения с количеством людей, приглашенных на обед .
3-10 . Все функции: придумайте информацию, которую можно было бы хранить в списке .
Например, создайте список гор, рек, стран, городов, языков… словом, чего угодно . Напи-
шите программу, которая создает список элементов, а затем вызывает каждую функцию,
упоминавшуюся в этой главе, хотя бы один раз .
Ошибки индексирования при работе
со списками
Когда программист только начинает работать со списками, он часто допускает одну
характерную ошибку. Допустим, имеется список с тремя элементами, и программа
запрашивает четвертый элемент:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[3])
В
этом случае происходит
ошибка индексирования
:
Traceback (most recent call last):
File "motorcycles.py", line 3, in
print(motorcycles[3])
IndexError: list index out of range
60
Глава 3 •
Списки
Python пытается вернуть элемент с индексом 3. Однако при поиске по списку
ни один элемент
motorcycles
не обладает индексом 3. Из-за смещения индексов
на 1 эта ошибка весьма распространена. Люди думают, что третьим элементом
является элемент с индексом 3, потому что они начинают отсчет с 1. Но для
Python третьим является элемент с индексом 2, потому что индексирование
начинается с 0.
Ошибка индексирования означает, что Python не может понять, какой индекс за-
прашивается в программе. Если в вашей программе происходит ошибка индексиро-
вания, попробуйте уменьшить запрашиваемый индекс на 1. Затем снова запустите
программу и проверьте правильность результатов.
Помните, что для обращения к последнему элементу в списке используется
индекс –1. Этот способ работает всегда, даже если размер списка изменился
с момента последнего обращения к нему:
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles[-1])
Индекс –1 всегда возвращает последний элемент списка, в данном случае значение
'suzuki'
:
'suzuki'
Этот синтаксис порождает ошибку только в одном случае — при попытке получить
последний элемент пустого списка:
motorcycles = []
print(motorcycles[-1])
В списке
motorcycles
нет ни одного элемента, поэтому Python снова выдает ошибку
индексирования:
Traceback (most recent call last):
File "motorcyles.py", line 3, in
print(motorcycles[-1])
IndexError: list index out of range
Достарыңызбен бөлісу: