• 1
  • 0
分享
  • Python3,这应该是,使用最广泛的6个内置函数,别说你还不知道。
  • Carl_奕然 2022-11-24 12:11:17 字数 3633 阅读 894 收藏 0

1、引言

小屌丝:鱼哥, 都说要想代码写的溜,Lamdba不能少。

小鱼:你在项目代码多写几个lamdba试试,看看架构师找不找你喝茶水。

小屌丝:…

小鱼:逗你玩… 架构师哪舍得自己花钱买茶叶,都是能蹭就蹭…

小屌丝:…

小鱼:你这突然提到lamdba函数,是想了解点什么??

小屌丝:嘿嘿,真是什么都瞒不过你, 我就想把python最常用的内置函数在重新捋一捋,

小鱼:说实话。

小屌丝:你也知道,我女神最近在学习python,所以我想…

小鱼:靠… 就知道你是这样的!

小屌丝:鱼哥,我也是身不由己啊, 不然… 说出来都是眼泪。

小鱼:行了,别装的这么可怜, 我给你捋一捋不就行了。

小屌丝:啥也别说了,此时我想…

2、内置函数详解

2.1 Lamdba 函数

lambda 函数用于创建匿名函数,又被称为lambda表达式。

实际上它只是一个表达式的存在,如果在代码编写过程中需要实现简单的函数逻辑但是单独写一个函数又比较麻烦就可以使用lambda表达式只需要一行代码就可以完成了。

比如需要实现一个简单的加法计算,使用基本的函数来实现需要创建一个add_1函数。

示例:

实现一个简单的加法计算。

一、基本函数

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
#基本函数来实现加法计算
def add_ms(x,y):
    return x + y
print(f'输出结果:{add_ms(8,9)}')

运行结果

输出结果:17

二、lamdba表达式

使用lamdba表达式来实现

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
#lamdba表达式来实现
add_lamd = lambda x,y:x+y
print(f'lamdba表达式输出结果:{add_lamd(5,10)}')

运行结果

lamdba表达式输出结果:15

解析:

    lambda x,y: x + y 表示 x,y是作为参数,x + y是作为函数的运算逻辑被执行。

2.2 Map 函数

map函数可以使用另外一个函数转换整个可迭代对象的函数,包括将字符串转换为数字、数字的四舍五入等等。

之所以使用map函数来完成这些事情可以节约内存,使代码的运行速度提高,并且使用的代码量比较少。

2.2.1 数字转换

示例:

将一个字符串的数组转换成数字的数组的形式,这里用两种方式:

    ①传统的for循环方式

    ②map函数

接下来,我们用代码转换。

一、传统for循环方式

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
#for 循环来读取res列表的值
strings = ['10','20','30','40','50']
res = []
for str in strings:
    res.append(int(str))
print(f'输出结果:{res}')

运行结果

输出结果:[10, 20, 30, 40, 50]

二、map函数

我们使用map函数方式来转换。

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
#调用map函数
strings = ['11','22','33','44','55']
res_map = map(int,strings)
print(f'map函数输出结果:{list(res_map)}')

运行结果

map函数输出结果:[11, 22, 33, 44, 55]

可以看到,map函数,一行代码就可以转换完成,非常方便。

2.2.2 字母大小写转换

解析:

    map(int,strings),其中int是作为函数作为参数传入的,而strings就是可以迭代的对象。

示例

    把小写英文字母转换成大写英文字母

代码示例

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
'''
代码实现功能:
创建函数,来转换可转化的序列数据
初始化make_super函数,将小写英文转换成大写英文
'''
#定义make_super函数,
def make_super(text):
    res_text = text.upper()
    return res_text
#定义英文单词列表
words = ['python', 'java', 'ruby','go']
#转化
words_res = list(map(make_super, words))
print(f'转换结果:{words_res}')

运行结果

转换结果:['PYTHON', 'JAVA', 'RUBY', 'GO']

使用map(make_super, words),其中make_super是作为函数传入的,而words作为可序列化数据。

2.3 Filter 函数

定义

    filter函数:使用该函数可以有效的过滤掉不需要的列表中的数据元素。

方法

'''
filter(function, iterable)
'''

代码示例

在逻辑处理中,同样是需要一个处理函数和一个可序列化的数据。

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
#定义列表
list_num = [11,22,33,44,55,66,77]
#过滤掉偶数,保留奇数
new_list = filter(lambda n:n % 2 == 1,list_num)
print(f'过滤后的结果:{list(new_list)}')

运行结果

过滤后的结果:[11, 33, 55, 77]

通过运行结果,可以看到过滤掉了所有的偶数元素,留下了奇数元素。

2.4 Reduce 函数

定义

    reduce函数通常用于计算整个列表的逻辑运算,即将一个函数的运算可以添加到这个列表的每个元素上面。

方法

'''
reduce(function, iterable[, initializer])
'''

代码示例

计算一个列表中每个元素之间的相乘的结果:

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
from functools import reduce
#列表
list_re = [10,20,30,40,50,]
#计算每个元素的乘积
print(f'计算结果:{reduce(lambda x, y: x * y, list_re)}')

运行结果

计算结果:12000000

2.5 Enumerate 函数

定义

    enumerate 函数:一般用于可序列化数据的处理上面,而python中的可序列化数据又比较多,所以,还是蛮重要的。

代码示例

可以使用该函数直接遍历出一个可序列化数据的下标索引以及对应的数据。

# -*- coding:utf-8 -*-
# @Time   : 2022-08-24
# @Author : Carl_DJ
#定义列表内容
words = ['python', 'java', 'ruby','go']
#遍历执行,返回新的列表
for index, data in enumerate(words):
    print(f'当前索引:{index},当前数据:{data}')

运行结果

当前索引:0,当前数据:python
当前索引:1,当前数据:java
当前索引:2,当前数据:ruby
当前索引:3,当前数据:go

2.6 Zip 函数

定义

    zip函数:可以同时遍历多个列表并将相同位置的元素组合成一个元祖。

代码示例

#定义空列表
list_res = []
#遍历列表使其相同位置元素能组合成
for m in zip([1, 2, 3, 4, 5], ['python', 'java', 'ruby', 'go', 'C#']):
    list_res.append(m)
print(f'输出结果:{list_res}')

运行结果

输出结果:[(1, 'python'), (2, 'java'), (3, 'ruby'), (4, 'go'), (5, 'C#')]

3、总结

看到这里,今天的分享差不多就完事了。

今天共分享了六种常用的内置函数:

    Lamdba 函数

    Map 函数

    Filter 函数

    Reduce 函数

    Enumerate 函数

    Zip 函数

在实际的工作中,这些都是非常实实在在常用的函数,

所以,这些也都是必须要掌握的知识。


我是奕然:

关注我,带你学习更多更有趣的Python知识。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 一、DMLDML是Data Manipulation Language英文缩写,数据操作语言包括:INSERT ( 添加语句 )UPDATE ( 更新语句 )DELETE ( 删除语句 )1、INSERT语法:INSERT [INTO] 表名 [(列名)] VALUES (值列表);实例:INSERT INTO goods (name) VALUES ('饼干');1.1 插入单行数据注意:字段名是可选的,如省略依次插入所有字段。INSERT INTO goods VALUES (8,'肥皂',DEFAULT,'2...
            0 0 1333
            分享
          •   积极布局印度市场的小米,在当地遇到难题。  印度执法局(ED)6月9日发布文件称,因小米涉嫌违反该国《外汇管理法》(FEMA),“向外国实体非法转移资金”,该局已经向小米技术印度私人有限公司、小米印度分公司、部分高管及花旗等三家银行发出正式通知。  出于该指控,印度当局此前已经扣押了小米共555.1亿卢比资金(约6.8亿美元),现价近50亿元人民币。数据显示,小米集团2022年经调整净利润为人民币85亿元,也就是说,这笔资金相当于小米去年净利润的57%。  对于此事,观察者网向小米方面求证。截至下午发稿前,该集团暂未回应。  小米的申诉,没有回响  2022年4月,印度执法局指控称,自20...
            0 0 555
            分享
          • 随着软件行业的快速发展,接口测试用例在软件开发中扮演着越来越重要的角色。自动化测试作为软件测试的一个重要分支,一般可以提高测试效率和质量,节约测试成本和时间,但是在实际推行过程中,大多数团队最终却难以持续实施自动化测试,不是编写测试用例有多难,而是维护测试用例的成本非常高,通常是“编写用例一时爽,维护起来火葬场”。于是对于如何有效地编写和运行接口测试用例就成了一个重要的话题。根据调查,大多数团队推行自动化测试最后却不了了之的原因无非是:1、需求变更频繁随着产品和业务的快速发展,需求往往会频繁变更,这就要求自动化测试的脚本也需要经常更新和维护,否则会导致测试效果下降。如果团队无法及时维护测试脚本...
            0 0 572
            分享
          •   近些年,随着互联网行业的不断发展,用户规模也有了爆发性的增长。产品的性能成为影响用户体验的重要因素。因此,性能测试越来越受到大型互联网企业的重视。  在做性能测试时,通常都会借助一些压测工具来模拟大量的并发用户。 目前业界压测工具种类繁多,比如Loadrunner、Jmeter、Locust、Ngrinder、Apache ab、Wrk、Webbench等。  面临这么多的压测工具,我们应该如何做出选择呢?你在公司里现在用的是什么工具呢?  相信很多小伙伴此刻喊出了“Jmeter”的名字,确实是,这几年 Jmeter因其使用简单,学习成本低,跨平台等特性,在行业内应用非常的广泛,拥有非常高...
            0 0 3153
            分享
          •   最近,在做测试开发平台的时候,需要对测试用例的列表进行后端分页,在实际去写代码和测试的过程中,发现这里面还是有些细节的,故想复盘一下,所以有了这篇文章。  分页的目的  做个假设,加入用例库有 1W 条数据,如果想要以列表形式展示,一次性返回 1W 条数据;这样做有两个弊端:  1.这样写出来的接口会慢。想一下如果随着时间的发展,这个数量变成了 10W、100W 该怎么办?  2.对前端不友好。用前端渲染 1W 条数据,有理智的开发都不会这么做。  所以,我们做分页的目的,主要是为了性能的提高,提高使用体验。  我这边开发语言是Python,Web框架用的是 Tornado,后台数据库用的...
            0 0 757
            分享
      • 51testing软件测试圈微信