🎉欢迎来到Python专栏~Python常用内置函数(二)
☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:Python学习专栏 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏📜 欢迎大家关注! ❤️ 🎉 目录-Python常用内置函数(二) 一、说明二、基本输入/输出三、range()四、zip()五、map()、reduce()、filter() 一、说明
Python技能树:Python入门技能树。 版本:Python 3.10。 IDE:PyCharm。 参考书籍:《Python数据分析、挖掘与可视化》。
基础文章: 1、【Python】Python基础知识总结。
2、【Python】PyCharm中调用另一个文件的函数或类。
3、【Python数据分析】Python基础知识篇。
4、【Python数据分析】Python基本数据类型。
二、基本输入/输出1、input()
内置函数input()用来接收用户的键盘输入,不论用户输入什么内容,input()一律返回字符串,必要时使用内置函数int()、float()或eval()对用户输入的内容进行类型转换。
num = int(input('请输入一个大于2的自然:'))# 除2的余数为1的整数为奇数,能被2整除的整数为偶数if num%2 == 1:print('这个是奇数')else:print('这个是偶数')# 运行结果:请输入一个大于2的自然:11这个是奇数 lst = eval(input('请输入一个若干自然数的列表:'))print('列表中所有元素之和为:', sum(lst))# 运行结果:请输入一个若干自然数的列表:[1,2,3,4,5]列表中所有元素之和为: 152、print() print()的语法格式如下:
print(value1,value2,...,sep='',end='\n')sep参数之前为需要输出的内容(可以有多个); sep参数用于指定数据之间的分隔符,如果不指定则默认为空格; end参数表示输出完所有数据之后的结束符,如果不指定则默认为换行符。
print(1,2,3,4,5) # 默认情况,使用空格作为分隔符print(1,2,3,4,5,sep=',') # 指定使用逗号作为分隔符print(1,2,3,4,5,end=' ') # 输出完所有数据之后,以空格结束,不换行print(6,7)# 运行结果:1 2 3 4 51,2,3,4,51 2 3 4 5 6 7 三、range()range()的语法格式如下:
range([start,] stop [, step] ),其中,参数start默认为0,step默认为1。该函数有range(stop)、range(start,stop)和range(start,stop,step)三种用法,返回具有惰性求值特点的range对象,其中包含左闭右开区间[start,stop)内以step为步长的整数范围。
该函数返回的range对象可以转换为列表、元组或集合,可以使用for循环直接遍历其中的元素,并且支持下标和切片。
range1 = range(4) # 只指定stop为4,start默认为0,step默认为1range2 = range(5,8) # 指定start=5和stop=8,step默认为1range3 = range(3,20,4) # 指定start=3,stop=20,step=4range4 = range(20,0,-3) # step也可以是负数print(range1,range2,range3,range4)print(range4[2])print(list(range1),list(range2),list(range3),list(range4))for i in range(10):print(i,end=' ')# 运行结果:range(0, 4) range(5, 8) range(3, 20, 4) range(20, 0, -3)14[0, 1, 2, 3] [5, 6, 7] [3, 7, 11, 15, 19] [20, 17, 14, 11, 8, 5, 2]0 1 2 3 4 5 6 7 8 9 四、zip()内置函数zip()用来把多个可迭代对象中对应位置上的元素分别组合到一起,返回一个可迭代的zip对象,其中每个元素都是包含原来的多个可迭代对象对应位置上元素的元组,最终结果中包含的元素个数取决于所有参数序列或可迭代对象中最短的那个,可以把zip对象转换为列表或元组之后查看其中的内容,也可以使用for循环逐个遍历其中的元素。
在使用该函数时要特别注意,zip对象中的每个元素都只能使用一次,访问过的元素不可再次访问;并且,只能从前往后逐个访问zip对象中的元素,不能使用下标直接访问指定位置上的元素;zip对象不支持切片操作,也不能作为内置函数len()和reversed()的参数。
data = zip('1234', [1,2,3,4,5,6])print(data)# 在转换为列表时,使用了zip对象中的全部元素,zip对象中不再包含任何内容print(list(data))# 如果需要再次访问其中的元素,必须重新创建zip对象data = zip('1234', [1,2,3,4,5,6])print(tuple(data))data = zip('1234', [1,2,3,4,5,6])# zip对象是可迭代的,可以使用for循环逐个遍历和访问其中的元素for item in data:print(item)# 运行结果:<zip object at 0x0000026601D5BE40>[('1', 1), ('2', 2), ('3', 3), ('4', 4)](('1', 1), ('2', 2), ('3', 3), ('4', 4))('1', 1)('2', 2)('3', 3)('4', 4) 五、map()、reduce()、filter()1、map() map()的语法格式如下:
map(func, *iterables)map()函数把一个可调用对象func依次映射到序列的每个元素上,并返回一个可迭代的map对象,其中每个元素是原序列中元素经过可调用对象func处理后的结果,该函数不对原序列做任何修改。
该函数返回的map对象可以转换为列表、元组或集合,也可以直接使用for循环遍历其中的元素,但是map对象中的每个元素只能使用一次。
from operator import addprint(map(str, range(5)))print(list(map(str, range(5))))print(list(map(len, ['abc', '1234', 'test'])))# 使用operator标准库中的add运算,add运算相当于运算符+# 如果map()函数的第一个参数func,是能够接收两个参数的可调用对象,则可以映射到两个序列上for num in map(add, range(5), range(5,10)):print(num)# 运行结果:<map object at 0x00000141CE8D2380>['0', '1', '2', '3', '4'][3, 4, 4]57911132、reduce()
在Python 3.x 中,reduce()不是内置函数,而在标准库functools中,需要导入之后才能使用。
reduce()的语法格式:
reduce(func, seq[, initial])函数reduce()可以将一个接收2个参数的函数以迭代的方式从左到右依次作用到一个序列或可迭代对象的所有元素上,并且每一次计算的中间结果直接参与下一次计算,最终得到一个值。
例如,继续使用operator标准库中的add运算,那么表达式reduce(add,[1,2,3,4,5])计算过程为((((1+2)+3)+4)+5)。
from functools import reducefrom operator import add, mul, or_seq = range(1,10)print(reduce(add, seq)) # 累加seq中的数字print(reduce(mul, seq)) # 累乘seq中的数字seq = [{1}, {2}, {3}, {4}]print(reduce(or_, seq)) # 对seq中的集合连续进行并集运算# 运行结果:45362880{1, 2, 3, 4}3、filter()
内置函数filter()用于使用指定函数描述的规则对序列中的元素进行过滤。
filet()的语法格式如下:
filter(func or None, iterable)在语法上,filter()函数将一个函数func作用到一个序列上,返回一个filter对象,其中包含原序列中使得函数func返回值等价于True的那些元素。如果指定函数func为None,则返回的filter对象中包含原序列中等价于True的元素。
和生成器对象、map对象、zip对象、reversed对象一样,filter对象具有惰性求值的特点,其中每个元素只能使用一次。
seq = ['abcd', '1234', '.,?!', '']print(list(filter(str.isdigit, seq))) # 只保留数字字符串print(list(filter(str.isalpha, seq))) # 只保留英文字母字符串print(list(filter(str.isalnum, seq))) # 只保留数字字符串和英文字符串print(list(filter(None, seq))) # 只保留等价于True的元素# 运行结果:['1234']['abcd']['abcd', '1234']['abcd', '1234', '.,?!']🧸结尾
❤️ 感谢您的支持和鼓励! 😊🙏 📜您可能感兴趣的内容:【Python】Python实现串口通信(Python+Stm32)【FPGA】串口通信讲解-状态机判断数据值 【Arduino TinyGo】【最新】使用Go语言编写Arduino-环境搭建和点亮LED灯【全网首发开源教程】【Labview机器人仿真与控制】Labview与Solidworks多路支配关系-四足爬行机器人仿真与控制