一、内置函数的简介
1.什么是内置函数
其实内置函数就是系统已经写好了,我们直接调用就好了
二.内置函数功能列表
python内置了一系列的常用函数,以便于我们使用。所有内置函数官网文档 https://docs.python.org/3/library/functions.html 内置函数
三.数学运算函数
1、abs() 绝对值函数
a=-2
print(abs(a))
#结果是输出2
2、round()函数
对浮点数进行近似取值,保留几位小数
a=2.359
print(round(a,2))#对a求近似值,保留两位小数,我的编译器输出是2.36
3、pow()函数
print(pow(2,3))#输出2的三次方等于8
print(pow(2,3,3))#2的三次方等于8,然后对3取余等于2
4、dicmod()求余数
5、max()求最大值
print(max([1,5,8,9,45,56]))#序列也就是可以是列表
print(max((1,5,5,5,8)))
print(max(1,2,5))
6、min()求最小值
7、sum()求和
迭代就是可以遍历的对象
print(sum(range(10),3))#得到1-9的和再加上3
8、eval()执行字符串表达式
其实就是去除字符串的设置,把他变成了一个表达式或者语句
def pri():
print('我被执行了')
pass
eval('pri()')
#‘pri()’就直接变成了pri()
四、强制转换函数
1.int()转为整型
2.float()转换成浮点数
3.str()转化为字符串
4.ord()字符转数字
5.chr()数字转字符
6.bool()转为布尔型
7.bin()转为二进制
print(bin(5))#得到结果是'0b101'
print(type(bin(5)))#结果是字符串类型
8.hex()转为十六进制
print(hex(18))#得到结果是'0x12'
print(type(bin(5)))#结果是字符串类型
9.oct()转为八进制
10.list()元组转换为列表
tupA=(1,2,3,4)
liA=list(tupA)
print(liA)#得到结果[1,2,3,4]
11.tuple()列表转换元组
12.dict()创建字典
dic=dict()#创建字典过程
print(type(dic))
dic['name']='林然'
dic['age']=18
print(dic)
结果:
13.bytes()转为字节数组
print(bytes('林然'.encode('utf-8')))
#‘林然’是我要转换的字符串,encode是我要转换成的编码
五、序列操作函数
序列操作:元组、字符串、列表
- all()函数
函数用于判断给定的可迭代参数 iterable【元组或列表】 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False元素除了是 0、空、FALSE 外都算 TRUE,注意空元素、空列表都返回为True
类似于逻辑操作中的and
print(all([]))#空列表返回True
print(all(()))#空元组返回True
print(all(''))#空字符串返回True
print(all([1,2,3,False]))#列表中含有False就会返回False
2.any()函数
函数用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True,类似于逻辑操作中的or
3.sorted()函数
sorted()是会返回一个新的列表,而sort()是在原列表进行操作,且sort只能对列表操作,而sorted可对可迭代对象进行操作
语法: sorted(iterable,[ cmp, key, reverse])
参数:
iterable -- 可迭代对象
cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)
返回值:返回重新排序的列表
li=[25,4,26,8,9]
li.sort()#list的排序方法
print('sort排序',li)#原始对象已经被修改了
liA=[25,4,26,8,9]
print('排序之前: {}'.format(liA))
new_list=sorted(liA,reverse=True)#降序排列
print('排序之后: {}'.format(liA))#可以发现原有对象并没有改变
print('新列表{}'.format(new_list))
结果:
4.reverse()函数用于反向列表中的元素
5.range() 函数
可创建一个整数列表,一般用在 for 循环中
语法: range(start, stop, step])
6.zip()
函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表
s1=[1,2,3]
s2=['林','然','win']
#zip只是起到一个压缩打包的作用,要想使用需要进行强转
print(list(zip(s1,s2)))#按照序列中对应的索引位置的元素存储为一个元组
#可迭代元素不一致时,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表
s3=['22','33','44','55']
print(list(zip(s1,s2,s3)))
eg:
def printBookInfo():
books=[]#存储所有图书信息
id=input('请输入编号:每个项以空格分隔')
bookName=input('请输入书名:每个项以空格分隔')#把str通过空格分隔
bookPos=input('请输入位置:每个项以空格分隔')
id_list=id.split(' ')
name_list=bookName.split(' ')
pos_list=bookPos.split(' ')
bookInfo=zip(id_list,name_list,pos_list)#打包处理
for bookItem in bookInfo:
'''
遍历图书信息进行存储
'''
dictInfo={'编号':bookItem[0],'书名':bookItem[1],'位置':bookItem[2]}
books.append(dictInfo)#将字典对象添加到List容器中
pass
print(books)
pass
printBookInfo()
7.enumerate()
函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中
listA=['a','b','c']
for item in enumerate(listA):
print(item)
pass
dictA={'1':'l','2':'a'}
for item in enumerate(dictA,5):#起始下标从5开始
print(item)
pass
结果:
六、集合
- 什么是集合:
set(集合) 也是python中的一种数据类型,是一个无序且不重复的元素集合
#set 不支持索引和切片,是一个无序的的且不重复的容器
#类似于字典,但是只有key,没有value
#创建集合
set1={1,2,3,4}
print(type(set1))
2.集合操作函数
3.add()函数
添加一个元素
#set 不支持索引和切片,是一个无序的的且不重复的容器
#类似于字典,但是只有key,没有value
#创建集合
set1={1,2,3,4}
#添加操作
set1.add(5)
print(set1)
结果:
4.clear()清空操作
#set 不支持索引和切片,是一个无序的的且不重复的容器
#类似于字典,但是只有key,没有value
#创建集合
set1={1,2,3,4}
#添加操作
set1.add(5)
print(set1)
#清空操作
set1.clear()
print(set1)
结果:
4.difference()取差集
两个集合的差集,a中存在,b中不存在
s1={'a','b','c'}
s2={'1','b','3'}
s3=s1-s2
s4=s1.difference(s2)#是生成了一个新的集合
print(s3)
结果:
5.intersection()交集
s1={'a','b','c'}
s2={'1','b','3'}
s3=s1&s2
s4=s1.intersection(s2)#是生成了一个新的集合
print(s3)
结果:
6.union 并集
包含a中的元素,也包含b中的元素
s1={'a','b','c'}
s2={'1','b','3'}
s3=s1|s2
s4=s1.union(s2)#是生成了一个新的集合
print(s3)
print(s4)
7.pop 集合
pop随机移除某个元素并且获取那个参数,集合pop没有参数
s1={1,2,3}
print(s1.pop())#移除一个数据
print(s1)
代码:
8.discard 移除指定元素
s1={1,2,3}
s1.discard(2)
print(s1)#结果为{1,3}
9.update 更新集合
就相当于把b的数据加到了a中,是在a的基础上进行更新
七、小结
八、课后练习
1.求三组连续自然数的和:求出1到10、20到30和35到45的三个和
2.100个和尚吃100个馒头,大和尚一人吃3个馒头,小和尚三人吃1个馒头。请问大小和尚各多少人?
3.指定一个列表,列表里含有唯一一个只出现过一次的数字。写程序找出这个“独一无二”的数字
九、练习代码
eg1;
def sum_eg():
'''
采用sum函数进行运算
:return:
'''
list1=list(range(1,11))
print('1-10的和:%d'%sum(list1))
list2=list(range(20,31))
print('20-30的和:%d' % sum(list2))
list3 = list(range(35, 46))
print('35-45的和:%d' % sum(list3))
sum_eg()
结果:
eg2:
def chi_man_tou():
'''
100个和尚吃100个馒头,
大和尚一人吃3个馒头,
小和尚三人吃1个馒头。请问大小和尚各多少人?
:return:
'''
for x in range(35):
y=100-x
if(y%3==0):
if(x*3+y/3==100):
print('大和尚%d人,小和尚%d人'%(x,y))
pass
pass
pass
pass
chi_man_tou()
结果:
eg3
def list_fun(listA):
'''
指定一个列表,
列表里含有唯一一个只出现过一次的数字。
写程序找出这个“独一无二”的数字
:return:
思路:先排序,判断下标位置的值的左右是否相等
'''
listB=sorted(listA)
if len(listA)==1:
print(listA[0])
return
if listB[0]!=listB[1]:
print(listB[0])
return
if listB[len(listA)-1]!=listB[len(listA)-2]:
print(listB[len(listA)-1])
return
i=1
while i<(len(listA)-1):
if listB[i-1]!=listB[i] and listB[i]!=listB[i+1]:
print(listB[i])
break
pass
i+=1
pass
listA=list(input('请输入一个列表,其中只有有一个数字是独一无二的'))
list_fun(listA)
十、官方答案
eg1:
def sumRange(m,n):
return sum(range(m,n+1))
print(sumRange(1,10))
print(sumRange(20,30))
print(sumRange(30,45))
eg2:
def PersonCount():
'''
计算各有多少个和尚
加上大和尚a 小和尚就是100-a
:return:
'''
for a in range(1,100):
if a*3+(100-a)*(1/3)==100:
return (a,100-a)
pass
pass
res=PersonCount()
print('大和尚{}人,小和尚{}人'.format(res[0],res[1]))
eg3
li=[1,3,4,3,5,2,4,2,5,6,6]
set1=set(li)
for i in set1:
li.remove(i)#这样li列表只剩下重复的数字集合了
pass
set2=set(li)#set2中为原来有重复数字的集合
set3=set1-set2#取差集就好了,有一说一确实可以
print(set3.pop())