六个Python编程最受用的内置函数使用详解
作者:Sir 发布时间:2022-06-12 22:26:01
在日常的python编程中使用这几个函数来简化我们的编程工作,经常使用能使编程效率大大地提高。
1. Map 函数
map函数可以使用另外一个函数转换整个可迭代对象的函数,包括将字符串转换为数字、数字的四舍五入等等。
之所以使用map函数来完成这些事情可以节约内存,使代码的运行速度提高,并且使用的代码量比较少。
比如这里需要将一个字符串的数组转换成数字的数组的形式。
使用传统的方式来进行解析的话,使用for循环的方式就需要好几行的代码才能完成。
strings = ['1', '2', '3', '4']
res = []
for str_ in strings:
res.append(int(str_))
print(res)
# [1, 2, 3, 4]
使用map函数直接需要一行代码就可以完成了。
strings = ['5', '6', '7', '8']
res_map = map(int, strings)
print(list(res_map))
# [5, 6, 7, 8]
使用map(int,strings),其中int是作为函数作为参数传入的,而strings就是可以迭代的对象。
这里再使用一个我们自己创建的函数来转换可序列化的数据。
初始化一个make_super函数用来将英文字符串转换成'大写'的字符串。
def make_super(text):
res_text = text.upper()
return res_text
words = ['python', 'java', 'scala']
words_res = list(map(make_super, words))
print(words_res)
# ['PYTHON', 'JAVA', 'SCALA']
使用map(make_super, words),其中make_super是作为函数传入的,而words作为可序列化数据。
2. Lamdba 函数
lambda 函数用于创建匿名函数,又被称为lambda表达式。实际上它只是一个表达式的存在,如果在代码编写过程中需要实现简单的函数逻辑但是单独写一个函数又比较麻烦就可以使用lambda表达式只需要一行代码就可以完成了。
比如需要实现一个简单的加法计算,使用基本的函数来实现需要创建一个add_1函数。
def add_1(a, b):
return a + b
print(add_1(5, 2))
而使用lambda表达式,一行代码就可以直接完成了,可以像下面这样写。
add_2 = lambda a, b: a + b
print(add_2(10, 10))
lambda a,b: a + b 表示a,b是作为参数,a + b是作为函数的运算逻辑被执行。
3. Enumerate 函数
enumerate 函数一般用于可序列化数据的处理上面,而python中的可序列化数据又比较多,重要性就可想而知了。
可以使用该函数直接遍历出一个可序列化数据的下标索引以及对应的数据。
使用一个列表数据来进行举例说明。
words = ['java', 'python', 'scala']
使用enumerate函数来执行一下整个遍历,最终返回一个新的列表。
for index, data in enumerate(words):
print(f'当前索引:{index},当前数据:{data}')
# 当前索引:0,当前数据:java
# 当前索引:1,当前数据:python
# 当前索引:2,当前数据:scala
看到返回的结果中包含了索引、数据,这样便于数据的组织和统计,因此,将该函数也列为比较常用的函数之一。
4. Reduce 函数
reduce函数通常用于计算整个列表的逻辑运算,也就是将一个函数的运算可以添加到这个列表的每个元素上面。
'''
reduce(function, iterable[, initializer])
'''
比如需要计算一个列表中每个元素之间的相乘的结果,则可以这样写。
from functools import reduce
list_ = [10, 20, 30, 40]
print(reduce(lambda a, b: a * b, list_))
这里由于函数的逻辑运算比较简单,所以使用了lambda表达式表示两个元素相乘。
最终再使用reduce函数,它的效果相当于10 * 20 * 30 * 40,结果就是240000,和我们预想得到的计算结果是一致的。
5. Filter 函数
filter函数,从字面意思就可以看出它是过滤的意思,使用该函数可以有效的过滤掉不需要的列表中的数据元素。
'''
filter(function, iterable)
'''
在逻辑处理中,同样是需要一个处理函数和一个可序列化的数据。
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 20]
nums_new = filter(lambda m: m % 2 == 0, nums)
print(list(nums_new))
# [2, 4, 6, 8, 20]
这里我们成功过滤掉了所有的奇数数据元素,最终只留下了偶数元素。
6. Zip 函数
zip函数在多个列表的组装过程中用到非常的多,可以同时遍历多个列表并将相同位置的元素组合成一个元祖。
list_res = []
for n in zip([1, 2, 3, 4, 5], ['python', 'java', 'scala', 'c++', 'C#']):
list_res.append(n)
print(list_res)
# [(1, 'python'), (2, 'java'), (3, 'scala'), (4, 'c++'), (5, 'C#')]
使用zip函数时,像这样的数据组合就可以轻松的实现。
通过观察上述的这些操作发现基本上都是对可序列化的数据的相关操作,因为在python的编码过程中大多数的数据处理相关的操作都是基于可序列化的数据的。
来源:https://mp.weixin.qq.com/s/OfWtT44ZFgZg2REZLyp7iA
猜你喜欢
- 呵,以前也没考虑过这方面的东西,现在写的代码越来越多,越来越复杂,如果再不把不用的变量及时释放掉,到时肯定会出问题。今天无意中在无忧Q群里看
- 本文实例讲述了Python3访问并下载网页内容的方法。分享给大家供大家参考。具体如下:#!/usr/local/bin/python3.2i
- 我将图形编辑程序分为两类:一类(是)绘图程序,利用这种程序可以一个像素一个像素(地)绘制图像;另外一类(是)制图程序,这种程序提供了一组对象
- 服务器响应HTTP的类型ContentType大全,使用方法:<% Response.ContentType =&
- 当然是可以的,而且非常简单,今天就教大家在ASP中不用模板生成HTML静态页的方法。这里假设有一个htmer.asp动态页面,你想把它生成为
- 准备篇:1、配置防火墙,开启80端口、3306端口vi /etc/sysconfig/iptables-A INPUT -m state -
- 这是来自于Steven D编写的WEB前端开发设计要点的内容。虽然许多设计师已非常熟练的使用了Web标准,让人遗憾的是有很多细节的排版处理仍
- 首先,与其他语言不同,JS的效率很大程度是取决于JS engine的效率。除了引擎实现的优劣外,引擎自己也会为一些特殊的代码模式采取一些优化
- 发一个数字拼图游戏,有点小疑问前几天写得,其中一段代码还要感谢“簡簡單單愛妳”的提示,不过我还是不太明白, ,有点笨。 $(&qu
- 1:构图图形的层次感图形和元素之间的层次感,可以在干扰视觉的同时,突出自身所想体现的主题,这种表现方式往往是比较直接而且有效的方式。我们所说
- 发现ie7的空格间距要比ie6/firefox/opera的都要宽一点。比如有时候排版的时候,我会采用简单的空格来分隔。<div&nb
- 什么是deferdefer用来声明一个延迟函数,把这个函数放入到一个栈上, 当外部的包含方法return之前,返回参数到调用方法之前调用,也
- 今天在看框架的时候无意间看到了document.compatMode,经过一番资料查找,终于搞懂了。文档模式在开发中貌似很少用到,最常见的是
- 最近公司有一个日文项目,由于之前使用的是自己开发的中文CMS,并没有将语言包分离,在网站建设调试过程中出现了令人头疼的乱码问题。乱码出现的原
- innerHTML,outerHTML innerHTML检索或设置标签内的内容;outerHTML检索或设置整个标签的内容(包含标签)。&
- 执行表扫描操作之前,将调用info()函数,以便为优化程序提供额外信息。优化程序所需的信息不是通过返回值给定的,你需填充存储引擎类的特定属性
- 下面这段代码能够显示,当前用户所能够看到的所有的用户和表有兴趣的, 可以把每个表的内容加上<% Dim objOraSess
- 常用快捷键1、Ctrl + Enter:在下方新建行但不移动光标;2、Shift + Enter:在下方新建行并移到新行行首;3、Ctrl
- 一、输入input("提示内容")(1)当程序执行到input,等待用户输入,输入完成后才继续往下执行(2)input接
- 在使用DB2以来,碰到了几次出现提示SQL1032N错误,每次出错时出错信息大概如下:11/21/2004 22:15:33 0 0 SQL