Функция next() в Python с практическими примерами
Функция next() в Python используется для извлечения последующего элемента из итератора.
- Знакомство с функцией Python next()
- Примеры функции Python next()
- 1) Использование функции next() с итератором
- 2) Использование функции Python next() для пропуска заголовка при чтении CSV-файла
Знакомство с функцией 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 со следующей информацией:
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)