Материалы, подготовленные в результате оказания услуги, помогают разобраться в теме и собрать нужную информацию, но не заменяют готовое решение.

Списки и генераторы списков в Python

Статью подготовили специалисты образовательного сервиса Zaochnik.

Содержание:

Введение в понятие списка в Python

Большинство программ работают не просто с отдельными переменными, а с наборами данных. Например, при работе с информацией о студентах класса программа может считывать список учащихся с клавиатуры или из файла, причем изменение числа учащихся не должно требовать изменения исходного кода.

Во многих задачах необходимо сохранять всю последовательность, например, если нужно вывести все элементы в возрастающем порядке (то есть отсортировать последовательность).

Для хранения таких данных в Python используется структура данных, известная как список (в других языках это чаще называется массивом).

Определение 1

Список — это последовательность элементов с индексами, начинающимися с 0, подобно символам в строке.

Список можно определить, перечислив его элементы в квадратных скобках.

Пример 1

```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()))]

```

Навигация по статьям

Выполненные работы по программированию

  • Программирование

    НИР на тему Автоматизированое рабочее места специалиста по социальной работе

    • Вид работы:

      Отчёт по практике

    • Выполнена:

      25 февраля 2020

    • Стоимость:

      1 900 руб.

    Заказать такую же работу
  • Программирование

    Обеспечение защиты информации при использовании системы электронного документооборота

    • Вид работы:

      Реферат

    • Выполнена:

      29 декабря 2019

    • Стоимость:

      500 руб.

    Заказать такую же работу
  • Программирование

    Искусственный интеллект. Достижения и перспективы развития.

    • Вид работы:

      Эссе

    • Выполнена:

      11 декабря 2019

    • Стоимость:

      800 руб.

    Заказать такую же работу
  • Программирование

    Айти. Заполнить дневник практики.

    • Вид работы:

      Отчёт по практике

    • Выполнена:

      9 декабря 2019

    • Стоимость:

      1 800 руб.

    Заказать такую же работу
  • Программирование

    Если свободное общество не сможет помочь многим бедным, оно не сможет защитить немногих богатых

    • Вид работы:

      Эссе

    • Выполнена:

      8 декабря 2019

    • Стоимость:

      1 000 руб.

    Заказать такую же работу
  • Программирование

    Двоичные деревья поиска, Организация поиска в массиве данных при помощи специальных методов поиска, Сортировка

    • Вид работы:

      Отчёт по практике

    • Выполнена:

      28 октября 2019

    • Стоимость:

      1 700 руб.

    Заказать такую же работу