Заметки по Python (20): встроенные функции высшего порядка

Python Технологии Nuggets призывают к публикации
Заметки по Python (20): встроенные функции высшего порядка

Мало знаний, большой вызов! Эта статья участвует в "Необходимые знания для программистов«Творческая деятельность.

Привет всем, яодна чаша в неделю, передняя часть, которая не хочет быть пьяной (завернутой). Если написанной статье посчастливилось получить вашу благосклонность, мне очень повезло~

Встроенные функции высшего порядка Python

map()

map()Будет отображать указанную последовательность в соответствии с предоставленной функцией

формат синтаксиса

map(function, iterable, ...)

первый параметрfunctionвызывается с каждым элементом в последовательности аргументовfunctionфункция,

второй параметрiterableодна или несколько последовательностей

Возвращает новый список, содержащий значение, возвращаемое каждой функциональной функцией.

образец кода

list1 = [1, 2, 4, 5, 56, 12, 5, 2, 34]


# 生成一个函数
def func(lt):  # 将偶数返回,奇数+1返回
    if lt % 2 == 0:
        return lt
    else:
        return lt + 1


list2 = map(func, list1)  # 千万不能加()
# 使用lambda关键字
list3 = map(lambda i: i if i % 2 == 0 else i + 1, list1)
print(list(list3))  # [2, 2, 4, 6, 56, 12, 6, 2, 34]
print(list(list2))  # [2, 2, 4, 6, 56, 12, 6, 2, 34]

функция уменьшения()

Функция reduce() является встроенной функцией системы в Python2x и была включена в Python3x.functoolsв библиотеке

reduce()Функция накапливает элементы в последовательности аргументов.

Функция выполняет следующие операции со всеми данными в наборе данных (связный список, кортеж и т. д.): используйте функциональную функцию (с двумя параметрами), переданную для сокращения, для работы с первым и вторым элементами в наборе и получайте Затем результат объединяется с третьими данными для использования функциональной функции, и, наконец, получается результат.

формат синтаксиса

reduce(function, iterable[, initializer])

function -- функция с двумя параметрами

iterable -- итерируемый объект

initializer -- необязательный, начальный параметр

Возвращает результат вычисления функции.

образец кода

from functools import reduce

list1 = [1, 2, 3, 4, 5, 6, 7]
value = reduce(lambda x, y: x + y, list1)
print(value)  # 28 = 1+2+3+4+5+6+7

Будет хранить результат вычисления в x, накапливая каждый раз. инициализатор должен установить начальное значение x

функция фильтра()

filter()Функция используется для фильтрации последовательности, отфильтровывания элементов, не соответствующих условиям, и возврата объекта итератора.Если вы хотите преобразовать в список, вы можете использоватьlist()для преобразования.

Он получает два параметра, первый — это функция, второй — последовательность, каждый элемент последовательности передается в качестве параметра функции для оценки, затем возвращает True или False и, наконец, помещает элемент, который возвращает True, в новый список.

Грамматические структуры

filter(function, iterable)

function -- Судебная функция.

iterable -- Итерируемые объекты.

возвращает итерируемый объект

функция сортировки()

sorted()Функция сортирует все итерируемые объекты и возвращает новый список.

Грамматические структуры

sorted(iterable, cmp=None, key=None, reverse=False)

iterable -- Итерируемые объекты.

cmp-- Функция сравнения, имеет два параметра, значения параметров берутся из итерируемого объекта, правила, которым должна следовать эта функция, если больше возвращает 1, если меньше возвращает -1, и возвращает 0, если он равен.

key -- В основном используется для сравнения элементов. Параметр всего один. Параметр конкретной функции берется из итерируемого объекта, а для сортировки указывается элемент в итерируемом объекте.

reverse -- правила сортировки,reverse = Trueв порядке убывания,reverse = False По возрастанию (по умолчанию).

Вернуть переупорядоченный список.

образец кода

students = [
    {'name': 'tom', 'age': 20},
    {'name': 'lucy', 'age': 15},
    {'name': 'lily', 'age': 13},
    {'name': 'mark', 'age': 21},
    {'name': 'jack', 'age': 13},
    {'name': 'steven', 'age': 18},
]

# 找出所有年龄大于18岁学生
result = filter(lambda x: x['age'] > 18, students)
print(list(result))  # [{'name': 'tom', 'age': 20}, {'name': 'mark', 'age': 21}]

# 按照年龄从小到大排序
students = sorted(students, key=lambda x: x['age'], reverse=True)  # 利用key

print(students)
'''
[{'name': 'mark', 'age': 21}, {'name': 'tom', 'age': 20}, 
{'name': 'steven', 'age': 18}, {'name': 'lucy', 'age': 15}, 
{'name': 'lily', 'age': 13}, {'name': 'jack', 'age': 13}]
'''