Встроенные функции 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
1
2

Если коллекция пустая возникнет исключение

print(max([], )) # ValueError
1

Именованный аргумент default используется чтобы избежать исключения. Функция max возвращает default только если коллекция пустая:

print(max([], default=0)) # 0
print(max([2, 3], default=5)) # 3
1
2

Порядок элементов изменяется аргументом key. Переданная в key функция применяется к каждому элементу. Результат функции используется для определения порядка элементов:

def neg(n):
    return -n

print(max([3, 5, 8, 2], key=neg))  # 2
1
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
1
2

Если коллекция пустая возникнет исключение

print(min([], )) # ValueError
1

Именованный аргумент default используется чтобы избежать исключения. Функция min возвращает default только если коллекция пустая:

print(min([], default=0)) # 0
print(min([2], default=0)) # 2
1
2

Порядок элементов изменяется аргументом key. Переданная в key функция применяется к каждому элементу. Результат функции используется для определения порядка элементов:

def neg(n):
    return -n

print(min([3, 5, 8, 2], key=neg)) # 8
1
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
1
2
3

Необязательный аргумент start задаёт начальное значение:

print(sum([1, 2, 3], start= 2)) # 8
print(sum([], start= 2)) # 2
1
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
1
2
3
4

Другие типы данных преобразуются к bool:

print(all([1, 2, 3])) # True
print(all([1, 2, 0])) # False
print(all([[1], []])) # False
1
2
3

Если iterable пустой, то функция вернёт True:

print(all([])) # True
1

Функция all() эквивалента следующему коду:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
1
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
1
2
3
4

Другие типы данных преобразуются к bool:

print(any([0, 0, 0])) # False
print(any([0, 6, 0])) # True
print(any([[1], []])) # True
1
2
3

Если iterable пустой, то функция вернёт False:

print(any([])) # False
1

Функция any() эквивалента следующему коду:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
1
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
1
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
1
2
3
4
5
6
7

enumerate() возвращает не коллекцию, а интегрируемый объект, это нужно учитывать при выводе:

print(*enumerate(['a', 'b', 'c']))
# (0, 'a') (1, 'b') (2, 'c')
1
2

Аргумент start задаёт индекс начала отчёта:

print(*enumerate(['a', 'b', 'c'], start = 3)) 
# (3, 'a') (4, 'b') (5, 'c')
1
2

Функция enumerate() эквивалента следующему коду:

def enumerate(sequence, start = 0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1
1
2
3
4
5

Ссылки

Последниее изменение: 03.04.2022, 12:50:42