- 6 августа 2025
- 6 минут
- 284
Списки и генераторы списков в Python
Статью подготовили специалисты образовательного сервиса Zaochnik.
Введение в понятие списка в Python
Большинство программ работают не просто с отдельными переменными, а с наборами данных. Например, при работе с информацией о студентах класса программа может считывать список учащихся с клавиатуры или из файла, причем изменение числа учащихся не должно требовать изменения исходного кода.
Во многих задачах необходимо сохранять всю последовательность, например, если нужно вывести все элементы в возрастающем порядке (то есть отсортировать последовательность).
Для хранения таких данных в Python используется структура данных, известная как список (в других языках это чаще называется массивом).
Список — это последовательность элементов с индексами, начинающимися с 0, подобно символам в строке.
Список можно определить, перечислив его элементы в квадратных скобках.
```python
Num = [2, 3, 5, 7, 11, 13]
Color = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']
```
В списке `Primes` содержится 6 элементов:
- `Num[0] == 2`
- `Num[1] == 3`
- `Num[2] == 5`
- `Num[3] == 7`
- `Num[4] == 11`
- `Num[5] == 13`
Список `Color` включает 7 строковых элементов. Элементы списка, подобно символам строки, можно также индексировать отрицательными значениями с конца:
- `Num[-1] == 13`
- `Num[-6] == 2`
Чтобы определить длину списка, то есть количество его элементов, используется функция `len`, например: `len(List) == 6`.
Способы создания и считывания списков
Первый способ — создать пустой список (длиной 0) и добавлять в него элементы с помощью метода `append`. Если программа получает количество элементов в списке `n`, а затем `n` элементов по одному, считывание можно организовать так:
```python
ListA = []
for i in range(int(input())):
ListA.append(int(input()))
```
Здесь сначала создается пустой список, затем считывается количество элементов, после чего вводятся элементы и добавляются в конец списка.
Для списков также доступны операции конкатенации (объединение двух списков) и повторение (умножение списка на число):
```python
ListA = [1, 2, 3]
ListB = [4, 5]
ListC = ListA + ListB
ListD = ListB * 3
```
В результате:
- `ListC` будет равно `[1, 2, 3, 4, 5]`
- `ListD` будет равно `[4, 5, 4, 5, 4, 5]`
Можно организовать процесс считывания списка так: сначала считать размер, создать список нужной длины, а затем в цикле считывать элементы:
```python
ListA = [0] * int(input())
for i in range(len(ListA)):
ListA[i] = int(input())
```
Для вывода элементов списка можно использовать инструкцию `print(ListA)`, которая выведет содержимое списка с квадратными скобками и запятыми. Для более удобного вывода можно делать это по одному элементу в строку:
```python
for i in range(len(ListA)):
print(ListA[i])
```
Либо с помощью второго способа, где элементы выводятся в одну строку, разделенные пробелами:
```python
for elem in ListA:
print(elem, end=' ')
```
Операции со списками в Python
- `a in ListA` — проверяет, содержится ли элемент `a` в списке `ListA` (возвращает `True` или `False`).
- `a not in ListA` — возвращает `True`, если элемент `a` не содержится в списке `ListA`.
- `min(ListA)` — возвращает наименьший элемент списка.
- `max(ListA)` — возвращает наибольший элемент списка.
- `ListA.index(a)` — находит индекс первого вхождения элемента `a` в список, генерирует исключение `ValueError` при отсутствии элемента.
- `ListA.count(a)` — возвращает количество вхождений элемента `a` в списке.
- `ListA.sort()` — сортирует список на месте (не возвращает нового списка).
- `sum(ListA)` — возвращает сумму элементов списка.
Методы добавления элементов:
- `ListA.append(a)` — добавляет элемент `a` в конец списка.
- `ListA.extend(L)` — прибавляет все элементы списка `L` в конец списка `ListA`.
Генераторы списков в Python
Чтобы создать список, заполненный одинаковыми элементами, можно использовать оператор повторения списка:
```python
ListA = [0] * n
```
Для более сложных оставление генераторов используют выражения, позволяющие заполнить список по формуле. Общий вид генератора следующий:
```python
[выражение for переменная in список]
```
Где `переменная` — идентификатор некоторой переменной, `список` — список значений, которые принимает данная переменная (обычно с помощью `range`), а `выражение` — формула для заполнения элементов списка.
Примеры использования генераторов
- Создать список из `n` нулей:
```python
ListA = [0 for i in range(n)]
```
- Создать список квадратов целых чисел:
```python
ListA = [i ** 2 for i in range(n)]
```
- Если необходимо заполнить список квадратами чисел от 1 до `n`:
```python
ListA = [i ** 2 for i in range(1, n + 1)]
```
- Получить список, заполненный случайными числами от 1 до 9 (с использованием функции `randint` из модуля `random`):
```python
from random import randint
ListA = [randint(1, 9) for i in range(n)]
```
- Список из строк, считанных со стандартного ввода:
```python
ListA = [input() for i in range(int(input()))]
```