Списки в Python похожи на массивы в других языках программирования. Это индексированные коллекции объектов, в которых элементы нумеруются начиная с нуля. Количество элементов можно изменять по требованию и нет необходимости заранее определять как размер списка, так и тип данных для значений списка. В один и тот же список могут быть добавлены объекты разных типов.
Списки всегда заключены в квадратные скопки, а оъекты в списке всегда отделяются друг от друга запятыми:
odds = [1,3,5,7]
Списки можно задавать явно, перечисляя элементы, или наращивать программно. В таком случае, часто сперва объявляется пустой список;
odds = [];
Если значением сиска явлюятся строки - их необходимо брать в ковычки:
words = ['Python', 'is', 'the best'];
Список может содержать разные типы значений, в том числе и другие вложенные списки.
details = [[1,2,3],['a','b','c'],['one','two','three'],'Python', 3.8];
Любую строку можно превратить в список с помощью метода list(). Например, таким образом можно создать список из пяти элементов:
letters = list('abcde');
Обратное действие, т.е. превращение списка в строку можно осуществить с помощью функции join(). В кавычках перед функцией указывается соединительный символ.
str = ''.join(letters);
Вывести весь список на экран можно по имени:
Для вывода конкретного элемента из списка по индексу можно воспользоваться квадратными скопками.
Внутри квадратных скопок могут быть использованы срезы, которые определяют начальное и конечное значение, и шаг.
letters[start:stop:step]
Рассмотрим примеры. Сперва выведем все элементы на экран:
letters
Вывод элемента по индексу:
letters[0] letters[1] letters[2] letters[3]
Выводим каждую вторую букву до (но не влключая) элемента с четвертым индексом.
letters[0:4:2]
Пропустить первые три буквы, и вывести остальные:
letters[3:]
Вывести все элементы до четвертого (не включая его):
letters[:4]
Вывести каждую вторую букву:
letters[::2]
Вывести последний элемент списка:
letters[-1]
Использование цикла for для прохода по элементам по списку:
for char in letters: print('\t', char);
Цикл for умеет работать со срезами:
for char in letters[:4]: print('\t', char)
for char in letters[-7]: print('\t', char)
Проверка принадлежности с помощью in и not in:
if 'a' in letters: print('a');
if 'x' not in letters: letters.append('x');
Для генерации случайных элементов списка можно воспользоваться специальной функцией range(). range() позволяет вам генерировать ряд чисел в рамках заданного диапазона. В зависимости от того, как много аргументов вы передаете функции, вы можете решить, где этот ряд чисел начнется и закончится, а также насколько велика разница будет между двумя числами.
Есть три способа вызова range():
Вызывая range() с одним аргументом, вы получите ряд чисел, начинающихся с 0 и включающих каждое число до, но не включая число, которое вы обозначили как конечное (стоп).
for i in range(3): print(i)
На экране увидим: 0 1 2.
Попробуем вызывать range() с двумя аргументами:
for i in range(1, 8): print(i)
На экране увдим: 1 2 3 4 5 6 7.
Рассмотрим еще пример использования функции range() с тремя аргументами:
for i in range(3, 16, 3): quotient = i / 3 print(f"{i} делится на 3, результат {int(quotient)}.")
Создадим еще один список, и рассмотрим возможные операции с объектом списка:
nums = [1,2,3,4];
Операции со списками
Удаление элементов по значению с помощью метода remove():
nums.remove(3);
Для удаления элементов по индексу, можно воспользоваться методом pop(), который вызывается либо с входящим параметром, либо без. Входящий параметр указывает индекс элмента, который необходимо удалить. Если метод вызывается без входящих параметров, он удаляет последний элемент списка:
nums.pop();
Добавление новых объектов в конец списка осуществляется с помощью метода append():
nums.append(5);
Добавление элементов в список осуществляется с помощью метода extend(), который принимает входящим параметром другой список.
nums.extend([3,4]);
Вставка элементов в список по индексу осуществляется с помощью метода insert(), где первый входящий параметр - это индекс, второй - значение для вставки.
nums.insert(0,1);
Копирование списка осуществляется с помощью метода copy():
new_num = nums.copy();