python-map、reduce、filter、sorted

目录

map

reduce

filter

sorted


map

Python3 map() 函数 | 菜鸟教程

map()函数接收两个参数,一个是函数,一个是序列,map 将传入的函数依次作用到序列中的每个元素,并把结果作为新的list 返回。map函数可以将一个可迭代对象中的每一个元素做同样的操作并返回新的对象。

a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 将原来列表中的元素都转化为字符串
str_a = map(str, a)
print(list(str_a))

from collections.abc import Iterable
print(isinstance(str_a, Iterable))  # 判断是否是可迭代对象的方法
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 可迭代对象的每个元素扩大10倍
def multiple(x):
    return x * 10
a10 = map(multiple, a)
print(list(a10))
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# 多个可迭代对象操作,使用时会自动选择个数最少的操作
n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
m = [10, 20, 30, 40, 50, 60]
def add(x, y):
    return x + y
nm = map(add, n, m)
print(list(nm))   # 返回结果:[11, 22, 33, 44, 55, 66]

reduce

reduce把一个函数作用在一个序列[x1, x2,x3...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算。

from functools import reduce

# 对一个序列求和
a = [2, 4, 6, 8, 10]
def sumtest(x, y):
    return x + y
sum = reduce(sumtest, a)
print(sum)   # 30

# 每次乘以10的结果
def fun1(x, y):
    return x * 10 + y
print(reduce(fun1, a))   # 24690

filter

filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

a = [1, 8, '  ', 9, 'i', '汗', '(lll¬ω¬)', '🐶', '😭']

def fun1(x):
    # 过滤掉数字及字符长度非1的值
    return isinstance(x, str) and len(x) == 1

str_a = filter(fun1, a)
print(list(str_a))    # 结果:['i', '汗', '🐶', '😭']

sorted

sorted()函数就可以对list进行排序

参数reverse:reverse默认为False(升序排列),倒序排列时reverse的值为True,字符串排序按照ASCII码

参数key:如按绝对值key = abs ,忽略大小写 key = str.lower

# 源码
def sorted(*args, **kwargs): # real signature unknown
    """
    Return a new list containing all items from the iterable in ascending order.
    
    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.
    """
    pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值