Работа со списками в Python – важная составляющая работы с этим языком программирования. Нередко приходится передавать функциям сразу несколько аргументов. Поэтому рассмотрим подробно то, как создавать список, какие методы имеет этот объект, а также какие операторы можно использовать к элементам объекта этого класса.
- Создание списка
- Работа с отдельными элементами списка
- Понятие среза списка
- Редактирование составляющих список элементов
- Методы и функции списков Python
- Index
- Count
- Sort
- Append
- Remove
- Pop’
- Extend
- Insert
- Простые операции над списком
- Операторы + и * для списков
- Оператор inи not in
- Использование цикла for для прохождения по списку
- Превращение списка в строку
Создание списка
Чтобы создать список в Python, необходимо заключить соответствующие значения в квадратные скобки. Например, так.
z = [3, 7, 4, 2] # Создание списка
Задача списка в Python – хранить несколько элементов, которые могут относиться к разным типам данных. Если говорить о примере выше, то все элементы являются целочисленными значениями. Но это вовсе не обязательно. Например, в этом примере значения относятся к типам int, bool, string, float.
# Создание списка с разными типам данных heterogenousElements = [3, True, 'Витя', 2.0]
Работа с отдельными элементами списка
Как же осуществляется взаимодействие с конкретным элементом списка в Python? Каждый элемент, который входит в этот массив данных, имеет индекс, который соответствует ему. Отсчет начинается с нуля, но возможна и индексация отрицательными значениями. Если для обозначения элемента используются индексы, начиная 0 и выше, то отсчет идет от первого индекса к последнему. Если же отсчет идет с отрицательных чисел, то направление отсчета обратное. Все просто.
z = [3, 7, 4, 2] # создаем список # обращение к первому элементу списка с индексом 0 print(z[0]) # элемент с индексом 0 -> 3 # выведите последний элемент списка >>> print(z[-1]) 2
Видим, что нет ничего сложного в том, чтобы обращаться к конкретным элементам списка.
Понятие среза списка
Чтобы получить целый спектр значений списка, используются срезы. Например, нужно получить последовательность значений, начинающихся индексом 3 и заканчивая индексом 5. В этом случае используется срез в таком формате: [3:5]. Учтите, что последний элемент не учитывается при индексации среза. То есть, последний индекс указывает на элемент, который уже не входит в последовательность.
Предположим, нам в приведенном выше списке нужны первый, второй элементы. В этом случае будет использоваться такой код.
# Создайте список z = [3, 7, 4, 2] # Вывод элементов с индексом от 0 до 2 (не включая 2) print(z[0:2]) # вывод: [3, 7]
Если нам надо отобрать все элементы, кроме определенного индекса, используется такой код.
>>> print(z[:3])
[3, 7, 4]
Если же нам надо получить список с элементами, начиная со второго элемента, и до самого конца, то используется такой код. Дальше мы можем увидеть, что интерпретатор поставил на вывод.
# начиная с индекса 1 до конца списка
>>> print(z[1:])
[7, 4, 2]
Редактирование составляющих список элементов
Преимущество список в Python заключается в том, что их можно редактировать. То есть, если понадобилось обновить определенный элемент после его создания, это легко сделать. Приведем пример кода, как это делается.
z = [3, 7, 4, 2] # Создание списка
# Изменяем элемент с индексом 1 на строку ‘fish’
z[1] = ‘fish’
print(z)
Видим, что для редактирования определенного элемента необходимо объявить его, а потом присвоить ему новое значение. Оно может отличаться по типу от того, которое было.
Методы и функции списков Python
Метод – это функция, которая вызывается из списка. Его задача – выполнить определенные действия, связанные с самим объектом. Рассмотрим методы, которые можно использовать.
Index
Этот метод позволяет получить местонахождение первого индекса, значение которого равняется x. В приведенном ниже примере возвращаемое им значение – 0.
# Создайте список
>>> z = [4, 1, 5, 4, 10, 4]
>>> print(z.index(4))
0
Также пользователь может указать место начала поиска.
>>> print(z.index(4, 3))
3
Count
Если вы знаете английский язык, то уже можете догадаться, что делает этот метод. С его помощью можно получить количество раз, которое значение встречается в определенном списке.
Работает эта функция следующим образом.
>>> random_list = [4, 1, 5, 4, 10, 4]
>>> print(random_list.count(4))
3
Sort
Метод, осуществляющий сортировку списка по возрастанию.
z = [3, 7, 4, 2] z.sort() print(z) Точнее, он выполняет сортировку такого типа по умолчанию. Также можно настроить метод так, чтобы была возможность отсортировать список от наибольшего к наибольшему. # Сортировка и изменение исходного списка от наивысшего к наименьшему z.sort(reverse = True) print(z)
Сортировка может осуществляться от А до Я или наоборот, если в качестве элементов списка используются строки.
# Сортировка списка строками names = ["Стив", "Рейчел", "Майкл", "Адам", "Джессика", "Лестер"] names.sort() print(names)
Append
Метод, использующийся для добавления элемента в конец списка. Точно так же, как и остальные, вызывается из переменной, кодирующей список. В качестве аргумента используется значение, которое необходимо вставить в конец.
z = [7, 4, 3, 2]
z.append(3)
print(z)
Remove
Этот метод используется для удаления заданного в скобках значения. Но убирается исключительно то, которое попадается первым. Например, если в списке используется несколько цифр «2», то этот метод уберет исключительно одну. Если надо больше, то придется использовать метод несколько раз.
z = [7, 4, 3, 2, 2]
z.remove(2)
print(z)
Pop’
Этот метод в качестве аргумента принимает индекс, соответствующий элементу списка, который нужно удалить. Кроме этого, он возвращает удаленный элемент. Поэтому его можно вставить в другой список или использовать в другом коде. Если вами не был указан индекс, метод просто убирает последний элемент.
z = [7, 4, 3, 3]
print(z.pop(1))
print(z)
Extend
Этот метод используется для того, чтобы добавить новые элементы в список. Его отличие от предыдущего, который был нами рассмотрен, в том, что пользователь может добавлять больше одного элемента за раз. Для этого аргументу необходимо передать список.
Например, добавим числа 4, 5 в конец нашего списка, хранящегося в переменной z.
z = [7, 3, 3]
z.extend([4,5])
print(z)
Можно также в качестве аргумента этого метода использовать несколько списков за раз. Для этого необходимо между ними поставить знак +.
>>> print([1,2] + [3,4])
[7, 3, 3, 4, 5]
Insert
Если необходимо вставить элемент или несколько элементов перед определенным элементом списка, используется этот метод. В качестве аргументов используются те значения, которые надо вставить.
z = [7, 3, 3, 4, 5]
z.insert(4, [1, 2])
print(z)
Простые операции над списком
Давайте приведем таблицу с перечнем операций, которые могут использоваться со списками.
А вот небольшой фрагмент кода с примером использования приведенных выше функций.
>>> list1 = [2, 3, 4, 1, 32] >>> 2 in list1 # 2 в list1? True >>> 33 not in list1 # 33 не в list1? True >>> len(list1) # количество элементов списка 5 >>> max(list1) # самый большой элемент списка 32 >>> min(list1) # наименьший элемент списка 1 >>> sum(list1) # сумма чисел в списке 42 # генератор списков python (list comprehension) >>> x = [i for i in range(10)] >>> print(x) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> print(list1.reverse()) # разворачивает список [32, 1, 4, 3, 2]
Операторы + и * для списков
Если необходимо объединить два списка, используется оператор +.
list1 = [11, 33]
list2 = [1, 9]
list3 = list1 + list2
print(list3)
Если появилась необходимость копировать элементы в списке определенное количество раз, используется знак умножения.
list4 = [1, 2, 3, 4]
list5 = list4 * 3
print(list5)
Оператор in и not in
Этот оператор используется для того, чтобы проверить, является ли элемент составляющей частью списка. Если да, возвращается значение True. Если же нет, то тогда – False. Приведем пример кода, демонстрирующий принцип использования этих операторов.
>>> list1 = [11, 22, 44, 16, 77, 98]
>>> 22 in list1
True
Если же использовать оператор not in, он выполняет противоположную задачу: возвращает истину в случае отсутствия элемента в списке и ложь – если он присутствует там.
>>> list1 = [11, 22, 44, 16, 77, 98]
>>> 22 in list1
True
Использование цикла for для прохождения по списку
Любой список – это последовательность данных. Таким образом, для перебора всех его элементов, можно использовать цикл for.
list1 = [1,2,3,4,5]
for i in list1:
print(i, end=» «)
Превращение списка в строку
Для этого используется специализированный метод .join. Его синтаксис следующий:
«,».join([«a», «b», «c»]) -> «a,b,c»
Обратите внимание, что разделитель необходимо указывать в кавычках перед join. При использовании этой функции обратите внимание и на то, что список должен состоять из строк.
Вот интересный фрагмент кода, демонстрирующий преобразование списка в строку.
mylist = [‘spam’, ‘ham’, ‘eggs’]
print(‘, ‘.join(mylist))
Такой подход используется, если это просто список строк. А вот если в список входят объекты, не относящиеся к строкам (например, целочисленные значения), то уже этот метод использовать не получится.
Если необходимо попросту получить строку, в которой в качестве разделителей используются запятые, можно воспользоваться таким шаблоном.
list_of_ints = [80, 443, 8080, 8081]
print(str(list_of_ints).strip(‘[]’))
В случае наличия квадратных скобок в объектах используется следующий вариант кода.
>>> print(str(list_of_ints)[1:-1])
80, 443, 8080, 8081
Также можно воспользоваться функцией map(), чтобы выполнить преобразование каждого элемента в список строки, а потом присоединиться к ним.
>>> print(', '.join(map(str, list_of_ints))) 80, 443, 8080, 8081 >>> print('\n'.join(map(str, list_of_ints))) 80 443 8080 8081
Видим, что выполнение операций со списками освоить несложно. Достаточно потренироваться использовать некоторые функции.