Списки (list)
Список можно описать, как набор пронумерованных переменных (элементов списка). То есть вместо того, чтобы вводить 10 переменных с разными именами, мы можем ввести список, где под одним именем будет 10 переменных под разными номерами.
Учитывая, что мы изучили цикл for с помощью него было бы удобно перебирать элементы списка, таким образом, что счетчик цикла будет выступать в роли номера.
Рассмотрим, как работать со списками на python.
Объявление списка:
*имя списка*=[]
Когда мы его только объявили в нем нет ни одного элемента. Далее в программе мы можем добавить в него элементы.
*имя списка*.append(*добавляемый элемент*)
Далее в программе мы можем обратиться к элементу списка под определенным номером (также как обращались к символам в строке):
*имя списка*[*номер элемента*]
В python нумерация элементов списка начинается с нуля (также как и у символов в строке).
Пример
Дан рост десяти человек. Необходимо рассчитать сколько среди них тех, кто выше 170.
#Объявляем список
heights=[]
#Запускаем цикл для считывания роста 10 человек
for i in range(0,10,1):
#Считываем рост очередного человека
heights.append(int(input()))
#Обнуляем переменную c
c=0
#Запускаем цикл для поиска людей выше 170
for i in range(0,10,1):
#Проверяем, что человек под номером i выше 170
if heights[i]>170:
#Если человек выше 170, то увеличиваем c на 1
c=c+1
#Когда цикл закончился выводим результат
print(c)
Также стоит отметить, что в примере выше мы инициализировали heights как пустой список, но также у нас есть возможность добавлять в список значения на этапе инициализации. heights=[175,166,172] - список из трех элементов.
С помощью ключевого слова list можно получить список из другой коллекции. На примере строки запись letters=list("asdf") равносильна записи letters=["a","s","d","f"].
Еще в python присутствует возможность умножать список на целое число n, таким образом дублируя элементы списка n раз (аналогично со строками). Следующие две строки создают одинаковые списки.
heights=[175,166]*4
heights=[175,166,175,166,175,166,175,166]
И опять же по аналогии со строками мы можем складывать списки, получая новый список со значениями обоих исходных списков.
[175,156]+[180,176,177]=[175,156,180,176,177]
И также как и со строками мы можем проверить наличие элемента в списке с помощью ключевого слова in. 176 in [165,177,176] вернет true, а 176 in [165,177,180] вернет false.
Помимо метода append для работы со списками существует ряд других методов и функций. Они представлены в таблице ниже. Пусть список heights=[180,176,177,176].
|
Метод/функция |
Пример использования |
Комментарий |
|
append(item) |
heights.append(165) Результат heights=[180,176,177,176,165] |
Добавляет элемент item в конец списка. |
|
insert(index, item) |
heights.insert(1,165) Результат heights=[180,165,176,177,176] |
Добавляет элемент item на позицию index. |
|
extend(items) |
heights.extend([175,166]) Результат heights=[180,176,177,176,175,166] |
Добавляет набор элементов items в конец списка. |
|
remove(item) |
heights.remove(176) Результат heights=[180,177,176] |
Удаляет первое вхождение элемента item. |
|
clear() |
heights.clear() Результат heights=[] |
Удаляет все элементы из списка. |
|
index(item) |
x=heights.index(177) Результат x=2 |
Возвращает индекс элемента item. |
|
pop(index) pop() |
heights.pop(2) Результат heights=[180,176,176] heights.pop() Результат heights=[180,176,177] |
Удаляет элемент под номером index. Если номер не указан, то удаляется последний элемент. |
|
count(item) |
x=heights.count(176) Результат x=2 |
Подсчитывает количество элементов item в списке. |
|
sort(key) sort() |
heights.sort() Результат heights=[176,176,177,180] words.sort(key=len) Результат words=["end", "begin", "continue"] |
Cортирует список по возрастанию. С помощью key можем указать функцию сортировки. Так в колонке слева для списка words=["begin","continue","end"] приведен пример сортировки по количеству символов у элемента. |
|
reverse() |
heights.reverse() Результат heights=[176,177,176,180] |
Разворачивает список. |
|
copy() |
values=heights values[1]=165 Результат heights=[180,165,177,176] values=heights.copy() values[1]=165 Результат heights=[180,176,177,176] |
Копирует список. Так при присваивании списка, мы на него ссылаемся, и при изменении элемента одного списка будет меняться соответствующий элемент другого списка. Если же мы хотим, чтобы такого не происходило, то нужно скопировать список. |
|
len(list) |
x=len(heights) Результат x=4 |
Возвращает количество элементов списка. |
|
sorted(list) sorted(list, key) |
newHeights=sorted(heights) Результат newHeights=[176,176,177,180] |
Возвращает отсортированный список list. Аналогично с методом sort в функцию sorted может быть передан ключ сортировки. |
|
min(list) |
x=min(heights) Результат x=176 |
Возвращает минимальный элемент из списка list. |
|
max(list) |
x=max(heights) Результат x=180 |
Возвращает максимальный элемент из списка list. |