🎉欢迎来到Python专栏~Python常用内置函数(二)
- ☆* o(≧▽≦)o *☆嗨 ~我是小夏与酒🍹
- ✨博客主页: 小夏与酒的博客
- 🎈该系列文章专栏: Python学习专栏
- 文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
- 📜 欢迎大家关注! ❤️
🎉 目录-Python常用内置函数(二)
一、说明
Python技能树:Python入门技能树。
版本:Python 3.10。
IDE:PyCharm。
参考书籍:《Python数据分析、挖掘与可视化》。
基础文章:
2、【Python】PyCharm中调用另一个文件的函数或类。
二、基本输入/输出
1、input()
内置函数
input()
用来接收用户的键盘输入,不论用户输入什么内容,input()
一律返回字符串,必要时使用内置函数int()
、float()
或eval()
对用户输入的内容进行类型转换。
python
num = int(input('请输入一个大于2的自然:'))
# 除2的余数为1的整数为奇数,能被2整除的整数为偶数
if num%2 == 1:
print('这个是奇数')
else:
print('这个是偶数')
# 运行结果:
请输入一个大于2的自然:11
这个是奇数
python
lst = eval(input('请输入一个若干自然数的列表:'))
print('列表中所有元素之和为:', sum(lst))
# 运行结果:
请输入一个若干自然数的列表:[1,2,3,4,5]
列表中所有元素之和为: 15
2、print()
print()
的语法格式如下:
python
print(value1,value2,...,sep='',end='\n')
sep
参数之前为需要输出的内容(可以有多个);
sep
参数用于指定数据之间的分隔符,如果不指定则默认为空格;
end
参数表示输出完所有数据之后的结束符,如果不指定则默认为换行符。
python
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 5
1,2,3,4,5
1 2 3 4 5 6 7
三、range()
range()
的语法格式如下:
python
range([start,] stop [, step] ),
其中,参数
start
默认为0
,step
默认为1
。该函数有range(stop)
、range(start,stop)
和range(start,stop,step)
三种用法,返回具有惰性求值特点的range
对象,其中包含左闭右开区间[start,stop)
内以step
为步长的整数范围。
该函数返回的range
对象可以转换为列表、元组或集合,可以使用for循环
直接遍历其中的元素,并且支持下标和切片。
python
range1 = range(4) # 只指定stop为4,start默认为0,step默认为1
range2 = range(5,8) # 指定start=5和stop=8,step默认为1
range3 = range(3,20,4) # 指定start=3,stop=20,step=4
range4 = 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()
的参数。
python
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()
的语法格式如下:
python
map(func, *iterables)
map()
函数把一个可调用对象func
依次映射到序列的每个元素上,并返回一个可迭代的map对象
,其中每个元素是原序列中元素经过可调用对象func
处理后的结果,该函数不对原序列做任何修改。
该函数返回的map对象
可以转换为列表、元组或集合,也可以直接使用for循环
遍历其中的元素,但是map对象
中的每个元素只能使用一次。
python
from operator import add
print(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]
5
7
9
11
13
2、reduce()
在Python 3.x 中,reduce()不是内置函数,而在标准库functools中,需要导入之后才能使用。
reduce()
的语法格式:
python
reduce(func, seq[, initial])
函数
reduce()
可以将一个接收2个参数的函数以迭代的方式从左到右依次作用到一个序列或可迭代对象的所有元素上,并且每一次计算的中间结果直接参与下一次计算,最终得到一个值。
例如,继续使用operator
标准库中的add
运算,那么表达式reduce(add,[1,2,3,4,5])
计算过程为((((1+2)+3)+4)+5)
。
python
from functools import reduce
from 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中的集合连续进行并集运算
# 运行结果:
45
362880
{1, 2, 3, 4}
3、filter()
内置函数filter()用于使用指定函数描述的规则对序列中的元素进行过滤。
filet()的语法格式如下:
python
filter(func or None, iterable)
在语法上,
filter()
函数将一个函数func
作用到一个序列上,返回一个filter对象
,其中包含原序列中使得函数func返回值等价于True
的那些元素。如果指定函数func
为None
,则返回的filter对象
中包含原序列中等价于True
的元素。
和生成器对象
、map对象
、zip对象
、reversed对象
一样,filter对象
具有惰性求值的特点,其中每个元素只能使用一次。
python
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', '.,?!']
🧸结尾