ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python函数,高阶函数

2021-01-20 02:01:03  阅读:152  来源: 互联网

标签:函数 python 列表 李四 key print 高阶 lambda


1.zip函数,系统函数,可以将多个列表合并,生成一个新的列表,返回结果是生成器

# a = [49, 80, 78, 60]
# b = ['张三', '李四', '小明', '小红']
# d = ['13121111111', '13222222222', '1333333333s3', '13455555555']
# c = zip(a, b, d)
# 返回结果是生成器、
#print(c)
# <zip object at 0x000001F348564988>
# print(list(c))
# 将多个列表合并
# [(49, '张三'), (80, '李四'), (78, '小明'), (60, '小红')]

# 拆列表 zip(*seq) 拆成多个列表
# c = [(49, '张三', '13121111111'), (80, '李四', '13222222222'), (78, '小明', '1333333333s3'), (60, '小红', '13455555555')]
# x, y, z = zip(*c)
# print(x, y, z)

2.# 函数定义 格式:

# 1.小写字母_命名
# 2.函数格式
  # def my_print(a,b,c):
  函数体
   不写return,默认返回None

        函数调用:

         # my_print(a=1, b=2, c=3)

          # my_print(1, 2, 3)

# 3. 函数参数列表中有默认值的参数要放到没有默认值的后面
# 4.函数参数列表中有空字典的,空列表的,需要定义为None
  # def my_print(b, a=None):
  # if a is None:
  # a = []
  # a.append(b)
  # print(a)

  # my_print(b=2)
  # my_print(b=3)
# 5.不定长参数 *args, args不能给参数取名字,传的是列表
# 6.**kwargs 传key value的格式,字典的格式
def ruxue(name, sex,age=6,*args,**kwargs):
    print(f'姓名:{name}')
print(f'性别:{sex}')
print(f'年龄:{age}')
print('其他信息: ')
for i in args:
print(i)
for k, v in kwargs.items():
if k == 'address':
print(f'地址:{v}')
elif k == 'aihao':
print(f'爱好:{v}')
#1. 只传必填参数
ruxue('张三', '男', 8)
#输出结果:
# 姓名:张三
# 性别:男
# 年龄:8
# 其他信息:

#2.传不定长参数args:
ruxue('李四', '男', 6, '立水桥', '足球')
#输出结果:
# 姓名:李四
# 性别:男
# 年龄:6
# 其他信息:
# 立水桥
# 足球
#3.传带参数名称的不定长参数:
ruxue('李四', '男', 6, '张江路888号', address='立水桥', aihao='足球')
# 姓名:李四
# 性别:男
# 年龄:6
# 其他信息:
# 张江路888号
# 地址:立水桥
# 爱好:足球

3.高阶函数 reduce 计算:

   使用之前需要先引包:

  from functools import reduce

# reduce把算法作用在序列中两个元素上做累计运算,入参有两个,如下:
# print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5]))
# 15
# a = [1, 2, 3, 4, 5]
# print(reduce(lambda x, y: x * y, a))
# 120

4.高阶函数  filter 过滤 把算法作用在序列的每一个上,当计算结果为true时保留,否则删掉,返回的是生成器,可以使用list转成列表

  接收一个布尔值返回值的函数和一个序列
       把传入的函数依次作用于每个元素,根据返回值是True还是False决定保留还是丢弃该元素

  例如: 需要将列表[1, 3, 4, 7, 8, 9] 中的偶数返回

     print(list(filter(lambda x: x % 2 == 0, [1, 3, 4, 7, 8, 9]))) 

   data = [["liulaoshi", "18", "学习"], ["tom", 25, "无"], ["hanmeimei", 26, "花钱"]]
  # print(list(filter(lambda x: x[-1] != '无', data)))

5.高阶函数  sorted 排序

      第一个参数是一个序列(或无序的队列如字典)

      key指定一个接收参数的函数,这个函数接收序列中的每个元素,经过运算后返回一个值

     该值就作为排序的依据。默认为None

     reverse是一个布尔值。如果设置为True,列表元素将被倒序排列

    sorted(seq, key=fun, reverse=True/False)

    例如:

 a = ['python', 'c', 'c++', 'c#', 'java', 'javascript']
# print(sorted(a, key=len))
 a = (('a', 40), ('c', 35), ('b', 30))
# print(sorted(a, key=lambda x: x[1]))
# [('b', 30), ('c', 35), ('a', 40)]
# 把字典通过iemts方法转为二维元组,自定义排序规则,对二维元组每一项的第二项进行排序
a = {"a": 40, "c": 35, "b": 30}
# print(sorted(a.items(), key=lambda x: x[1], reverse=True))


 



 

 

标签:函数,python,列表,李四,key,print,高阶,lambda
来源: https://www.cnblogs.com/maxwellsky/p/14300872.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有