УПРАЖНЕНИЯ
4-1 . Пицца: вспомните по крайней мере три ваши любимые разновидности пиццы . Сохрани-
те их в списке и используйте цикл for для вывода всех названий .
• Измените цикл for так, чтобы вместо простого названия пиццы выводилось сообще-
ние, включающее это название . Таким образом, для каждого элемента должна выво-
диться строка с простым текстом вида «I like pepperoni pizza» .
• Добавьте в конец программы (после цикла for) строку с завершающим сообщением .
Таким образом, вывод должен состоять из трех (и более) строк с названиями пиццы
и дополнительного сообщения, скажем, «I really love pizza!» .
Создание числовых списков 69
4-2 . Животные: создайте список из трех (и более) животных, обладающих общей характе-
ристикой . Используйте цикл for для вывода названий всех животных .
• Измените программу так, чтобы вместо простого названия выводилось сообщение,
включающее это название, например «A dog would make a great pet» .
• Добавьте в конец программы строку с описанием общего свойства . Например, можно
вывести сообщение «Any of these animals would make a great pet!» .
Создание числовых списков
Необходимость хранения наборов чисел возникает в программах по многим при-
чинам. Например, в компьютерной игре могут храниться координаты каждого
персонажа на экране, таблицы рекордов и т. д. В программах визуализации данных
пользователь почти всегда работает с наборами чисел: температурой, расстоянием,
численностью населения, широтой/долготой и другими числовыми данными.
Списки идеально подходят для хранения наборов чисел, а Python предоставляет
специальные средства для эффективной работы с числовыми списками. Достаточно
один раз понять, как эффективно пользоваться этими средствами, и ваш код будет
хорошо работать даже в том случае, если список содержит миллионы элементов.
Функция range()
Функция
range()
упрощает построение числовых последовательностей. Например,
с ее помощью можно легко вывести серию чисел:
numbers.py
for value in range(1,5):
print(value)
И хотя на первый взгляд может показаться, что он должен вывести числа от 1 до 5,
на самом деле число 5 не выводится:
1
2
3
4
В этом примере
range()
выводит только числа от 1 до 4. Перед вами еще одно про-
явление «смещения на 1», часто встречающегося в языках программирования. При
выполнении функции
range()
Python начинает отсчет от первого переданного зна-
чения и прекращает его при достижении второго. Так как на втором значении про-
исходит остановка, конец интервала (5 в данном случае) не встречается в выводе.
Чтобы вывести числа от 1 до 5, используйте вызов
range(1,6)
:
for value in range(1,6):
print(value)
На этот раз вывод начинается с 1 и завершается 5:
70 Глава 4 • Работа со списками
1
2
3
4
5
Если ваша программа при использовании
range()
выводит не тот результат,
на который вы рассчитывали, попробуйте увеличить конечное значение на 1.
Использование range() для создания числового списка
Если вы хотите создать числовой список, преобразуйте результаты
range()
в спи-
сок при помощи функции
list()
. Если заключить вызов
range()
в
list()
, то ре-
зультат будет представлять собой список с числовыми элементами.
В примере из предыдущего раздела числовая последовательность просто выводи-
лась на экран. Тот же набор чисел можно преобразовать в список вызовом
list()
:
numbers = list(range(1,6))
print(numbers)
Результат:
[1, 2, 3, 4, 5]
Функция
range()
также может генерировать числовые последовательности, про-
пуская числа в заданном диапазоне. Например, построение списка четных чисел
от 1 до 10 происходит так:
even_numbers.py
even_numbers = list(range(2,11,2))
print(even_numbers)
В этом примере функция
range()
начинает со значения 2, а затем увеличи-
вает его на 2. Приращение 2 последовательно применяется до тех пор, пока
не будет достигнуто или пройдено конечное значение 11, после чего выводится
результат:
[2, 4, 6, 8, 10]
С помощью функции
range()
можно создать практически любой диапазон чисел.
Например, как бы вы создали список квадратов всех целых чисел от 1 до 10? В язы-
ке Python операция возведения в степень обозначается двумя звездочками (
**
).
Один из возможных вариантов выглядит так:
squares.py
squares = []
for value in range(1,11):
square = value**2
squares.append(square)
print(squares)
Создание числовых списков 71
Сначала в точке создается пустой список с именем
squares
. В точке вы при-
казываете Python перебрать все значения от 1 до 10 при помощи функции
range()
.
В цикле текущее значение возводится во вторую степень, а результат сохраняется
в переменной
square
в точке . В точке каждое новое значение
square
присо-
единяется к списку
squares
. Наконец, после завершения цикла список квадратов
выводится в точке :
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Чтобы сделать код более компактным, можно опустить временную переменную
square
и присоединять каждое новое значение прямо к списку:
squares = []
for value in range(1,11):
squares.append(value**2)
print(squares)
Конструкция выполняет ту же работу, что и строки и в
squares .py
. Каждое
значение в цикле возводится во вторую степень, а затем немедленно присоединя-
ется к списку квадратов.
При создании более сложных списков можно использовать любой из двух подхо-
дов. Иногда использование временной переменной упрощает чтение кода; в других
случаях оно приводит лишь к напрасному удлинению кода. Сначала сосредо-
точьтесь на написании четкого и понятного кода, который делает именно то, что
нужно, — и только потом переходите к анализу кода и поиску более эффективных
решений.
Простая статистика с числовыми списками
Некоторые функции Python предназначены для работы с числовыми списками.
Например, вы можете легко узнать минимум, максимум и сумму числового списка:
>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45
Достарыңызбен бөлісу: |