列表操作的四个函数(函数式编程)

map函数

map函数的两个参数,一个是函数,另一个是可迭代对象 返回的也是一个对象会依次迭代第二个参数的值返回给函数处理,返回的还是一个迭代器. 第一个参数中函数可以是内建函数或匿名函数

from functools import reduce
import operator

list1 = [1, 2, 3, 4, 5]
list2 = [8, 9, 10, 11, 12, 16, 18]

# 1、使用map生成一个把上面两个列表的数相加的新列表,这样生成的列表只有五个元素,按最短的列表进行计算的

result = map(lambda x, y: x + y, list1, list2)
print(list(result))

# 2、map的经典用法之:将两个列表中的数据组合在一起

list3 = ['name', 'age', 'city', 'country']

result = map(lambda x, y: x + '-' + str(y), list3, list1)
print(list(result))

# 3、将字符串列表转成数字列表
string = ['1', '2', '3', '4', '5']
result = map(int, string)
print(list(result))

# 4、将数字转为字符串列表
result = map(str, list1)
print(list(result))

# 5、将列表字符串转为元组
result = map(tuple, list3)
# 输出这些被拆分成一个单词一个元组的字符串
for i in result:
    print(i)

reduce函数(需要引入)

reduce函数是对一个列表进行的操作,共三个参数,第一个是处理用的函数,第二个是可迭代对象,第三个是初始参数
reduce主要是把可迭代对象进行累积,返回的通常是一个内容
这里如果加入了第三个初始化参数,返回结果时还要加上这个值,这个是可选参数

# 导入reudce函数
from functools import reduce
# 导入operator使用其中的add方法
import operator
result = reduce(lambda x, y: x + y, list1, 5)
print(result)

# 下面不填写缺省参数
result = reduce(lambda x, y: x + y, list1)
print(result)

# 1、reduce函数实际应用案例,计算列表中数据的乘积
result = reduce(lambda x, y: x * y, list1)
print(result)

# 2、将多个字符串连成一个
result = reduce(lambda x, y: x + '+' + y, list3)
print(result)
# 3、计算列中所有元素的和用operator.add

result=reduce(operator.add,list1)
print(result)

filter函数的使用

filter函数用于过滤序列,过滤掉不符合条件的元素,返回由符合元素组成的新列表
第一个为过滤用的函数,第二个为序列,每个元素作为参数传递给函数进行判断然后返回True或False最后把是True的元素放到新列表中

print('*'*20+'filter过滤使用'+'*'*20)
# 1、找出1-100中的偶数
result=filter(lambda x:x%2==0,[x for x in range(1,100)])
print(list(result))

# 2、过滤出列表中所有长度大于3的字符串

result=filter(lambda x:len(x)>3,list3)
print(list(result))

sort 与 sorted 区别:

sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,
而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作
语法:
sorted(iterable[, key[, reverse]])
参数说明:
iterable – 可迭代对象。
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)
返回:
返回重新排序的列表。

print('*' * 20 + 'sorted对列表元素进行排序' + '*' * 20)
list1 = [3, 6, 8, 2, 1, 0, 6]
list2 = [8, 11, 33, 99, 25, 96, 48, 31]
# 1、sort列表排序和sorted的区别演示
# sort是列表的方法对列表进行排序原有列表顺序改变
list2.sort()
print(list2)
# 排序后返回一个新列表
list_sort = sorted(list1)
print(list_sort)

# 2、改变排序方式使用第二个参数reverse=False
list_sort1 = sorted(list1, reverse=False)
print(list_sort1)

# 3、自定义排序演示
# 正数从小到大排列,负数从大到小排序
# 匿名函数中abs为绝对值函数处理负数变为绝对值
list3 = [1, 10, 9, 0, 6, -10, -2, -5, -1]
list_sorted = sorted(list3, key=lambda x: (x < 0, abs(x)))
print(list_sorted)


# 4、列表中自定义对象的排序
class Student():
    def __init__(self, name, age):
        self.name = name
        self.age = age


# 实例为学生类
stu1 = Student('aaa', 19)
stu2 = Student('ccc', 20)
stu3 = Student('bbb', 18)
stu4 = Student('ece', 21)
# 生成学生对象列表
list_stu = [stu1, stu2, stu3, stu4]
# 输出学生对象列表中的两个属性
for stu in list_stu:
    print(stu.name, stu.age)
print('*'*50)
# 对学生对象的年龄属性进行排序
# list_stu2=sorted(list_stu,key=lambda x:x.age)

# 对学生对象的姓名属性进行排序
list_stu2 = sorted(list_stu, key=lambda x: x.name)

# 输出排序后的学生对象的两个属性
for stu in list_stu2:
    print(stu.name, stu.age)

函数式编程的总结

四个函数都是对列表进行的操作,
1、map对多个列表进行处理,处理后返回一个列表
2、reduce对列表中的元素进行操作处理,返回的是一个值,这个函数需要引入后才可以使用。
3、filter 对列表进行过滤,返回还是一个列表
4、sorted不打乱原有列表重新生成一个排序后的列表。
map是多个列表的操作,其它三个reduce,filter,sorted是对列表的元素进行操作.

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值