常用的内置函数

学习!

需要注意的知识点:

  • 大部分内置函数经常搭配lambda函数使用

  • 可迭代对象:字符串、列表、元组、字典、集合、文件对象

  • 注意!!!!

    • 在py3中部分函数的返回值是一个迭代器,不能多次遍历,(map、filter、zip、range)

    • 在py2中部分函数的返回值是一个列表/元组/字符串/列表套元组,可多次遍历

enumerate()函数

  • enumerate()函数是枚举的意思
  • 格式:enumerate(argument,start = 0)
    • argument可以是迭代器或可迭代对象(列表/字符串/元组···)
    • start是默认返回的索引值,默认从0开始,可以修改
  • 通常和for循环一起使用,可以获取遍历对象的索引和值,一一对应

实例如下:

# 1、搭配字符串使用
str1 = 'python'
for index,value in enumerate(str1):
print(f'{index}:{value}')
# 结果
0:p
1:y
2:t
3:h
4:o
5:n
# 2、搭配列表(元组一样)一起使用
l = ['Hammer','jason','tony']
for a,b in enumerate(l):
print(f'{a},{b}')
# 结果
0,Hammer
1,jason
2,tony #3、搭配集合使用
s = {"aline","Hammer",18,'199****1234'}
for index,value in enumerate(s):
print(f'{index},{value}')
# 结果
0,Hammer
1,aline
2,18
3,199****1234 # 4、搭配字典使用
dic = {'name':'hammer','age':18,'number':'199***1234'}
for index,value in enumerate(dic):
# 这样是直接输出了字典的键
print(f'{index}:{value}')
# 结果
0:name
1:age
2:number
for index, value in enumerate(dic):
# 输出字典的值
print(f'{index}:{dic[value]}')
# 结果
0:hammer
1:18
2:199***1234
  • 注意枚举对字典和集合使用,可能索引的位置不能按顺序对应字典和集合的值,因为字典和集合的无序性所导致!

实例如下:

# 集合举例
s={'one','two','three','four'}
for index,value in enumerate(s):
print(f'{index}:{value}')
# 结果,1和one没有对应,因为集合的无序性
1:three
2:four
3:two
4:one
  • 图示如下:


  • 默认的输出的起始位置为0,可以修改默认起始位置

    • eg:start = 0 >>>> start = 1 / 直接写1

实例如下:

lst = ['HammerZe','jason','tony']
# 起始位置默认为0
for index,value in enumerate(lst):
print(f'{index}:{value}') #修改默认位置为1,写start = 1 / 直接写1
for index,value in enumerate(lst,start=1):
print(f'{index}:{value}')
# 结果,写一块了
0:HammerZe
1:jason
2:tony
1:HammerZe
2:jason
3:tony

map()函数

  • map()函数的意思是映射,根据提供的函数对指定的序列做映射处理
  • 格式:map(function,iterable) # iterable:可迭代对象
    • 第一个参数为函数名,第二个参数为可迭代对象
  • 过程:循环遍历可迭代对象中的每一个元素传递给function函数,保存返回值,返回一个新的可迭代对象,并没有修改原理的可迭代对象。

实例如下:

# map函数的使用,搭配lambda函数使用
'''案例1''':
# 定义一个可迭代对象
lst = [1,2,3,4,5]
# 用res接收map函数的返回值,转换成列表
# lambda函数作用:给lst列表中每一个元素加2
res = list(map(lambda x:x+2,lst))
print(res)
# 结果
[3, 4, 5, 6, 7] '''案例2'''
# 面试题(提示:使用了map函数、lambda函数、列表解析)
# 一行代码实现,求10以内的偶数的平方和
print(sum(map(lambda x: x ** 2, [x for x in range(1, 10) if x % 2 == 0]))) #分步实现
# 1、遍历出1到10以内的偶数
even_num = [x for x in range(1,10) if x % 2 ==0] #[2, 4, 6, 8]
# 2、对每一个元素求平方用到映射和lambda计算公式
# print(even_num)
square_num = map(lambda x:x**2,even_num) # [4, 16, 36, 64]
#print(list(square_num))
# 3、最后求和
print(sum(square_num)) # 两个结果
120

zip()函数

  • zip()函数是从一个或多个迭代器获取元素,组合成一个新的迭代器,以列表套元组的形式返回。
  • 如果zip()函数中传入的迭代对象长度不等,以长度最短的迭代器为基准。
  • 实在不理解可以把函数看作“拉链”,一条拉链是一般长的,或者想一下短板效应
  • 格式:
    • zip(iterable1,iterable2···iterablen)
    • iterable为可迭代对象

实例如下:

l = [1,2,3,4]
# zip()函数传入一个参数
get_return = list(zip(l))
print(get_return) # zip()函数传入两个等长的参数(列表和元组)
# 只要是可迭代对象不同类型也可以
l1 = [1,2,3,4]
l2 = ('HammerZe',18,'male','study')
get_return = list(zip(l1,l2))
print(get_return) # zip()函数传入多个不等长的参数
l1 = [1,2,3,4]
l2 = ['HammerZe',18,'male','study']
l3 = ['name','age','gender','hobby','number','height']
get_return = list(zip(l1,l2,l3))
print(get_return) # l3的元素只输出了4个,以最短的列表为参考 # 三个示例结果:
[(1,), (2,), (3,), (4,)]
[(1, 'HammerZe'), (2, 18), (3, 'male'), (4, 'study')]
[(1, 'HammerZe', 'name'), (2, 18, 'age'), (3, 'male', 'gender'), (4, 'study', 'hobby')]

filter()函数

  • filter()函数用于过滤可迭代对象中的元素,过滤掉不符合条件的元素,返回符合条件的元素组织成新的列表。
  • 格式:
    • filter(function , iterable)
    • function为函数名,iterable为可迭代对象

实例如下:

# 输出1-10以内的奇数
l = [1,2,3,4,5,6,7,8,9,10]
res = filter(lambda x:x%2==1,l)
print(list(res))
#结果
[1, 3, 5, 7, 9]

reduce()函数

注意:在python 3.0.0.0以后, reduce已经不在built-in function里了, 需要from functools import reduce.

  • reduce()函数的意思是累计操作
  • 格式:
    • reduce(function,sequence [ ,initial] )
    • function为函数名,function中必须是两个参数,sequence为序列,initial有指定的值相当于追加使用数据,或当sequence为空,作为返回值。

实例如下:

# 实现列表元素的累加
from functools import reduce
l = [1,2,3,4,5]
res = reduce(lambda x,y:x+y,l)
print(res)
# 结果
15
# 用列表解析+reduce实现
res = reduce(lambda x,y:x+y ,[x for x in range(1,6)])
print(res)
# 结果
15
#实现6的阶乘
res = reduce(lambda x,y:x*y ,[x for x in range(1,6)])
print(res)

sum()函数

  • sum函数是对序列里的数据进行加法操作,区别reduce函数
  • 格式:
    • sum(sequence,[,start ] )
    • sum函数是对sequence里的数据进行加法操作,start默认为0,如果写入数据作为sequence的第一个数据传入

实例如下:

# sum对列表求和
lst = [1,2,3,4]
print(sum(lst))
# 结果>>>>10 # 修改sum的默认值为1,作为列表的第一个元素传入
print(sum(lst,1))
# 结果>>>>11

max()/ min()函数

  • max()和 min()函数就是求最大最小

  • 格式:

    • max(*args, key=None)
    • min(*args, key=None)
    • 参数key用来指定一个函数,此函数的功能就是制定排序的规则,一般用lambda函数

    实例如下:

    # 常规用法
    print(min(1, 2, 3, 4))
    print(max(1, 2, 3, 4)) # 搭配lambda使用,比较字符大小用的是ASCII
    dic = {1:'a',2:'b',3:'c'}
    # 比较v的大小返回v
    res = max(dic,key=lambda x:dic[x])
    print(dic[res]) #结果
    1
    4
    c

sort()函数

  • sort()函数应用到列表上,属于列表的内置方法,没有返回值,是对原列表进行排序操作
  • 格式:
    • sort( key=None, reverse=False)
    • key为需要排序的对象,reverse默认为False,升序,改为True为降序

实例如下:

l = [1,5,6,9,7]
l.sort()
print(l)
# 结果
[1, 5, 6, 7, 9]

sorted()函数

  • sorted()函数可以对所有可迭代对象进行排序操作
  • 格式:
    • sorted(iterable,key = None ,reverse = False)
    • iterable:可迭代对象
    • 参数key用来指定一个函数,此函数的功能就是制定排序的规则,一般用lambda函数。
    • reverse = False为升序,=True为降序,默认升序。
    • 返回一个可迭代对象(列表)

实例如下:

#搭配列表使用
l = [11,22,44,33,55]
res = sorted([i for i in l if i>30])
print(res,type(res))
# 结果
[33, 44, 55] <class 'list'> # 搭配字典使用
dic = {1:"hammer",2:"jason",3:"tony"}
# 按key排序
print(sorted(dic))
print(sorted(dic.keys()))
# 按value排序,对比的是ASCII码
print(sorted(dic.values()))
#结果
[1, 2, 3]
[1, 2, 3]
['hammer', 'jason', 'tony'] # 搭配lambda使用
# 按照工资多少排序升序排列
lst = [{'salary':18000,'age':18,'name':'hammer'},
{'salary':10000,'age':28,'name':'jason'},
{'salary':20000,'age':38,'name':'tony'}]
print(sorted(lst, key=lambda x: x['salary']))
# 结果
[{'salary': 10000, 'age': 28, 'name': 'jason'},
{'salary': 18000, 'age': 18, 'name': 'hammer'},
{'salary': 20000, 'age': 38, 'name': 'tony'}]



!!!!!持续更新中,码字总结不易点个赞叭~!!!!!

python-内置函数(搭配lambda使用)的更多相关文章

  1. python——内置函数和lambda匿名函数

    内置函数 接下来,我们就一起来看看python里的内置函数.截止到python版本3.6.2,现在python一共为我们提供了68个内置函数.它们就是python提供给你直接可以拿来使用的所有函数.这 ...

  2. Python内置函数之匿名(lambda)函数

    Python内置函数之匿名(lambda)函数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.匿名函数 #!/usr/bin/env python #_*_coding:utf ...

  3. lambda 表达式+python内置函数

    #函数 def f1(a,b): retrun  a+b #lambda方式,形参(a,b):返回值(a+b) f2=lambda a,b : a+b 在一些比较简单的过程计算就可以用lambda p ...

  4. python内置函数

    python内置函数 官方文档:点击 在这里我只列举一些常见的内置函数用法 1.abs()[求数字的绝对值] >>> abs(-13) 13 2.all() 判断所有集合元素都为真的 ...

  5. python 内置函数和函数装饰器

    python内置函数 1.数学相关 abs(x) 取x绝对值 divmode(x,y) 取x除以y的商和余数,常用做分页,返回商和余数组成一个元组 pow(x,y[,z]) 取x的y次方 ,等同于x ...

  6. Python基础篇【第2篇】: Python内置函数(一)

    Python内置函数 lambda lambda表达式相当于函数体为单个return语句的普通函数的匿名函数.请注意,lambda语法并没有使用return关键字.开发者可以在任何可以使用函数引用的位 ...

  7. python内置函数,匿名函数

    一.匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n ...

  8. Python 内置函数sorted()在高级用法

    对于Python内置函数sorted(),先拿来跟list(列表)中的成员函数list.sort()进行下对比.在本质上,list的排序和内建函数sorted的排序是差不多的,连参数都基本上是一样的. ...

  9. Python之路(第八篇)Python内置函数、zip()、max()、min()

    一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算,如果全部都是true,就返回true, 但是如果是空字符串.空列表也返回t ...

  10. Python之路Python内置函数、zip()、max()、min()

    Python之路Python内置函数.zip().max().min() 一.python内置函数 abs() 求绝对值 例子 print(abs(-2)) all() 把序列中每一个元素做布尔运算, ...

随机推荐

  1. T-SQL——数据透视和逆透视

    目录 0. 测试数据集及说明 0.1 准备测试数据 0.2 对一维表和二维表理解 1. 透视转换 1.1 使用标准SQL进行数据透视 1.2 使用T-SQL中pivot函数进行数据透视 1.3 关于 ...

  2. CSharp委托与匿名函数

    CSharp委托与匿名函数 场景 面对事件处理,我们通常会通过定义某一个通用接口,在该接口中定义方法,然后在框架代码中,调用实现该接口的类实例的方法来实现函数的回调.可能这样来说有些抽象,那我们提供一 ...

  3. ansible远程运维操作

    1.command 用于查看文件内容,查看磁盘,内存,启动命令等纯命令信息 ansible portal -m command -a "cat /test1/test"2.ping ...

  4. IEEE 754舍入的问题

    写在前面 本文的舍入方法只适用于保留0位或1位小数,个人水平所限,暂时没有发现保留更多小数位的舍入的规律- IEEE 754的舍入模式 IEEE 754标准提供了2类,5种舍入模式,在默认情况下一般是 ...

  5. Vue3学习(八)之 Vue CLI多环境配置

    一.前言 这里相对于之前就没那么麻烦了,通俗点说就是使用配置文件来管理多环境,实现环境的切换. 二.实现切换 1.增加开发和生产配置文件 在web的根目录下,创建开发环境切换配置文件.env.dev, ...

  6. [对对子队]Beta设计和计划

    需求再分析 Alpha阶段用户反馈的问题主要有三个 新手引导部分没有明确指出合成按钮可以使用下拉框切换目标,因此不少玩家卡在第三关 觉得合成动画太长,希望可以快进或者跳过 对游戏目标很迷惑,不知道为什 ...

  7. Noip模拟38 2021.8.13

    T1 a 跟入阵曲很像,但是忘记入阵曲这题的思路是什么了 这里再提一下,入阵曲是子矩阵和是$k$的倍数,这道题目是子矩阵和是在一段区间内$[L,R]$ 因为这道题$n$特别小,$m$较大,考虑复杂度为 ...

  8. Noip模拟16 2021.7.15

    题目真是越来越变态了 T1 Star Way To Heaven 首先,你要看出这是一个最小生成树的题(妙吧?) 为什么可以呢? 我们发现从两点连线的中点过是最优的,但是上下边界怎么办呢? 我们把上下 ...

  9. 2021.8.5考试总结[NOIP模拟31]

    暴力打满直接rk3? T1 Game 想了一万种贪心和两万种$hack$. 可以先用最显然的贪心求出最高得分是多少.(从小到大用最小的大于$b_i$的$a$得分) 然后用一棵权值线段树维护值域内$a$ ...

  10. Github点赞超多的Spring Boot学习教程+实战项目推荐!

    Github点赞接近 100k 的Spring Boot学习教程+实战项目推荐!   很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Boot 进行开发,毕竟它这 ...