Функция next() в Python с практическими примерами

Функция next() в Python используется для извлечения последующего элемента из итератора.

Содержание

Знакомство с функцией Python next()

Итератор — это объект, реализующий протокол итератора, состоящий из двух методов:

  • Метод __iter__(), который возвращает сам объект итератора.
  • Метод __next__(), который возвращает последующий элемент. Если все элементы были возвращены, метод __next__() вызывает исключение StopIteration.

Функция next() получает последующий элемент из итератора, вызывая его метод __next__().

Вот синтаксис функции next():

next(iterator[, default])

Функция next() имеет два параметра:

  • iterator – этот обязательный аргумент указывает итератор, из которого вы хотите получить последующий элемент.
  • default – это необязательный аргумент. Функция next() возвращает значение по умолчанию, если итератор исчерпан; в противном случае она вызовет исключение StopIteration.

Примеры функции Python next()

Давайте рассмотрим несколько примеров использования функции next().

1) Использование функции next() с итератором

В следующем примере определяется итератор, который возвращает ряд случайных чисел от min до max и использует функцию next() для получения последующего случайного числа из итератора:

from random import randint


def random_seq(min, max, size):
    for _ in range(0, size):
        yield randint(min, max)


random_numbers = random_seq(1, 100, 3)

r = next(random_numbers)
print(r)

r = next(random_numbers)
print(r)

r = next(random_numbers)
print(r)

Как это работает.

  • Сначала импортируем функцию randint() из встроенного модуля random:
from random import randint
  • Во-вторых, определите генератор, который возвращает ряд случайных целых чисел от min до max:
def random_seq(min, max, size):
    for _ in range(0, size):
        yield randint(min, max)
  • В-третьих, вызовите функцию random_seq:
random_numbers = random_seq(1, 100, 3)

random_numbers — это генератор, который также является итератором.

  • В-четвертых, вызовите функцию next() три раза, чтобы получить следующий элемент из итератора random_numbers:
r = next(random_numbers)
print(r)

r = next(random_numbers)
print(r)

r = next(random_numbers)
print(r)

Он должен отобразить три случайных числа от 1 до 100.

Если вы вызовете функцию next() еще раз, вы получите исключение StopIteration:

r = next(random_numbers) # StopIteration

Однако если вы используете значение по умолчанию, функция next() вернет это значение вместо того, чтобы вызывать исключение StopIteration:

r = next(random_numbers, None)
print(r)  # None

2) Использование функции Python next() для пропуска заголовка при чтении CSV-файла

В следующем примере встроенный модуль csv используется для чтения файла country.csv со следующей информацией:

Пропуск заголовка при чтении CSV-файла с помощью метода next()

import csv

with open('country.csv', encoding='utf8') as f:
    csv_reader = csv.reader(f)

    # skip the header
    next(csv_reader)

    # iterate over the data line
    for line in csv_reader:
        print(line)

Как это работает.

  • Сначала импортируйте модуль csv:
import csv
  • Во-вторых, откройте файл country.csv и верните объект читателя из функции csv.reader(). Объект читателя — это итератор.
with open('country.csv', encoding='utf8') as f:
    csv_reader = csv.reader(f)
    #...
  • В-третьих, вызовите функцию next(), чтобы извлечь заголовок из итератора csv_reader:
next(csv_reader)

Наконец, отобразим все строки данных:

for line in csv_reader:
    print(line)

Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *