Список в Python – это встроенный тип данных, который является одной из многочисленных структур данных. Эти структуры можно представить как сложные единицы, объединяющие более простые элементы. Каждая структура имеет свои особенности. Списки, в частности, представляют собой изменяемые последовательности, содержащие элементы в произвольном порядке.
В большинстве языков программирования существует популярный тип данных – массив. В Python такого встроенного типа нет, однако списки можно считать их аналогами с одним существенным отличием: все элементы массива должны быть одного типа, тогда как в случае со списками в Питоне этого ограничения нет.
Например, массивы могут быть собраны только из целых чисел, только вещественных чисел или только строк. Списки же потенциально могут быть той же единородной конструкцией, но допускается также смешивать числа, строки и другие элементы в одном списке.
Создание списков в Python может осуществляться множеством способов. Вот простейший пример создания списка:
>>> a = [12, 3.85, "black", -4] >>> a [12, 3.85, 'black', -4]
Таким образом, мы создали список и присвоили его переменной a. Список в Python объявляется внутри квадратных скобок и может содержать любое количество элементов. Для доступа ко всему списку в программе достаточно указать одну переменную – a.
Порядок элементов в списке имеет значение, поскольку каждый элемент имеет уникальный индекс, который начинается с нуля. Например, число 12 имеет индекс 0, а строка "black" – индекс 2. Чтобы получить конкретный элемент, следует указать имя переменной и нужный индекс в квадратных скобках:
>>> a[0] 12 >>> a[3] -4
В Python также поддерживается индексация с конца, начиная с -1:
>>> a[-2] -4 >>> a[-1] 'black' >>> a[-3], a[-4] (3.85, 12)
Иногда необходимо извлечь не один элемент, а несколько подряд идущих – это называется срезом. Для этого указываются индексы первого элемента среза и следующего за последним:
>>> a[0:2] [12, 3.85]
В этом примере получится срез из элементов с индексами 0 и 1, так как элемент с индексом 2 не включается. Для получения среза, охватывающего последний элемент, необходимо опустить указание индекса начала или конца:
>>> a[:3] [12, 3.85, 'black'] >>> a[2:] ['black', -4] >>> a[:] [12, 3.85, 'black', -4]
Списки изменяемы, что означает возможность добавления, удаления и модификации их элементов. Изменение значения элемента осуществляется через обращение к нему по индексу и запись нового значения:
>>> a[1] = 4 >>> a [12, 4, 'black', -4]
Более эффективно добавлять и удалять элементы, используя специализированные методы списков:
>>> a.append('wood') >>> a [12, 4, 'black', -4, 'wood'] >>> a.insert(1, 'circle') >>> a [12, 'circle', 4, 'black', -4, 'wood'] >>> a.remove(4) >>> a [12, 'circle', 'black', -4, 'wood'] >>> a.pop() 'wood' >>> a [12, 'circle', 'black', -4] >>> a.pop(2) 'black' >>> a [12, 'circle', -4]
Вы можете получить полный список методов для работы со списками с помощью функции dir(), передав ей переменную, связанную со списком, или название класса (в нашем случае – list). В результате вы получите список, в котором имена без двойных подчеркиваний представляют собой доступные методы.
Информацию о конкретном методе можно получить через функцию help(). Для этого нужно передать ей имя метода, например help(a.pop)
или help(list.index)
. Для выхода из справки нажмите q.
Можно изменить списки без использования методов, прибегнув к объединению срезов:
>>> b = [1, 2, 3, 4, 5, 6] >>> b = b[:2] + b[3:] >>> b [1, 2, 4, 5, 6]
Здесь мы берём первый срез от начала до второго элемента и еще один с четвертого элемента и до конца, объединяя их оператором "сложения".
Кроме того, возможно замена целого среза:
>>> mylist = ['ab','ra','ka','da','bra'] >>> mylist[0:2] = [10,20] >>> mylist [10, 20, 'ka', 'da', 'bra']
Вот пример создания пустого списка и его заполнения случайными числами в цикле:
>>> import random >>> c = [] >>> i = 0 >>> while i < 10: ... c.append(random.randint(0,100)) ... i += 1 ... >>> c [30, 44, 35, 77, 53, 44, 49, 17, 61, 82]
Практическая работа
- Напишите программу, которая считывает восемь чисел с клавиатуры и добавляет их в список. Далее выведите на экран сумму, максимальное и минимальное значения из этих чисел, используя функции sum(), max() и min().
- Напишите программу для генерации сотни случайных вещественных чисел и заполните ими список. Выведите полученный список построчно по десять элементов. Затем отсортируйте список с помощью метода sort() и вновь выведите на экран по десять элементов в строке. Реализуйте отдельную функцию для вывода списка, принимающую в качестве аргумента этот список.