Встроенные функции Python для работы с коллекциями (min, max, sum, all, any, enumerate)
max
- max(iterable, *[, key, default])
- max(arg1, arg2, *args[, key])
Функция возвращает максимальный элемент. Две версии функции отличаются аргументами: с итерируемым объектом и со списком аргументов.
print(max([3, 5, 8, 2])) # 8
print(max(3, 5, 8, 2)) # 8
2
Если коллекция пустая возникнет исключение
print(max([], )) # ValueError
Именованный аргумент default используется чтобы избежать исключения. Функция max возвращает default только если коллекция пустая:
print(max([], default=0)) # 0
print(max([2, 3], default=5)) # 3
2
Порядок элементов изменяется аргументом key. Переданная в key функция применяется к каждому элементу. Результат функции используется для определения порядка элементов:
def neg(n):
return -n
print(max([3, 5, 8, 2], key=neg)) # 2
2
3
4
min
- min(iterable, *[, key, default])
- min(arg1, arg2, *args[, key])
Возвращает минимальный элемент. Две версии функции отличаются аргументами: с итерируемым объектом и со списком аргументов.
print(min([3, 5, 8, 2])) # 2
print(min(3, 5, 8, 2)) # 2
2
Если коллекция пустая возникнет исключение
print(min([], )) # ValueError
Именованный аргумент default используется чтобы избежать исключения. Функция min возвращает default только если коллекция пустая:
print(min([], default=0)) # 0
print(min([2], default=0)) # 2
2
Порядок элементов изменяется аргументом key. Переданная в key функция применяется к каждому элементу. Результат функции используется для определения порядка элементов:
def neg(n):
return -n
print(min([3, 5, 8, 2], key=neg)) # 8
2
3
4
sum(iterable, /, start=0)
Возвращает сумму элементов iterable:
print(sum([1, 2, 3])) # 6
print(sum([0.2, 0.3, 0.5])) # 1.0
print(sum([])) # 0
2
3
Необязательный аргумент start задаёт начальное значение:
print(sum([1, 2, 3], start= 2)) # 8
print(sum([], start= 2)) # 2
2
all(iterable)
Возвращает True если все элементы iterable равны True:
print(all([True, True, True])) # True
print(all([True, False, True])) # False
print(all(map(lambda x: x % 2 == 0, [2, 4, 6, 8]))) # True
2
3
4
Другие типы данных преобразуются к bool:
print(all([1, 2, 3])) # True
print(all([1, 2, 0])) # False
print(all([[1], []])) # False
2
3
Если iterable пустой, то функция вернёт True:
print(all([])) # True
Функция all() эквивалента следующему коду:
def all(iterable):
for element in iterable:
if not element:
return False
return True
2
3
4
5
any(iterable)
Возвращает True если хотя бы один из элементов iterable равен True:
print(any([False, False, False])) # False
print(any([False, True, False])) # True
print(any(map(lambda x: x % 2 != 0, [2, 4, 5, 8]))) # True
2
3
4
Другие типы данных преобразуются к bool:
print(any([0, 0, 0])) # False
print(any([0, 6, 0])) # True
print(any([[1], []])) # True
2
3
Если iterable пустой, то функция вернёт False:
print(any([])) # False
Функция any() эквивалента следующему коду:
def any(iterable):
for element in iterable:
if element:
return True
return False
2
3
4
5
enumerate(iterable, start=0)
Перебирает коллекцию и возвращает одновременно элемент и его индекс. С помощью enumerate() такой цикл
a = ['a', 'b', 'c']
for i in range(len(a)):
print(i, a[i])
# 0 a
# 1 b
# 2 c
2
3
4
5
6
7
заменяется на
a = ['a', 'b', 'c']
for i, v in enumerate(a):
print(i, v)
# 0 a
# 1 b
# 2 c
2
3
4
5
6
7
enumerate() возвращает не коллекцию, а интегрируемый объект, это нужно учитывать при выводе:
print(*enumerate(['a', 'b', 'c']))
# (0, 'a') (1, 'b') (2, 'c')
2
Аргумент start задаёт индекс начала отчёта:
print(*enumerate(['a', 'b', 'c'], start = 3))
# (3, 'a') (4, 'b') (5, 'c')
2
Функция enumerate() эквивалента следующему коду:
def enumerate(sequence, start = 0):
n = start
for elem in sequence:
yield n, elem
n += 1
2
3
4
5