11. 内置函数
python.org
11.1 range()函数
功能:生成一个指定的数字序列 参数:start,stop[,step]?step:步进,可正可负,默认为1 返回值:可迭代的对象,数字序列
res = range(10)
#转为list列表数据
print(list(res))
#转为for循环
for i in range(10):
print(i)
#转为迭代器,使用next()函数调用
ree = iter(res)
print(next(ree))
11.2 zip()函数
功能:可接收多个可迭代对象,然后把每个可迭代对象中的第i个元素组合在一起,形成一个新的迭代器 参数:*iterables,任意个可迭代对象 返回值:返回一个?元组?的迭代器
var1 = '12345'
var2 = ['a','b','c','d']
var3 = ('A','B','C','D')
zip1 = zip(var1,var2,var3)
print(zip1,type(zip1))
for i in zip1:
print(i)
'''
('1', 'a', 'A')
('2', 'b', 'B')
('3', 'c', 'C')
('4', 'd', 'D')
'''
zip()与运算符结合可以用来拆解一个列表:*
var2 = ['a','b','c']
var3 = ['A','B','C']
zip1 = zip(var2,var3)
print(list(zip1))
print(zip(var2,var3)) # 迭代器对象!!
print(*zip(var2,var3)) # 组合好的多个元组数据!!
v2,v3 = zip(*zip(var2,var3))
print(var3 == list(v3) and var2 == list(v2))
print(v2,v3)
11.3 其他内置函数
11.3.1 数据类型相关内置函数
int();?float();?bool();?complex();?str();?list();?tuple();?dict();?set();
11.3.2 变量相关函数
id()?获取当前数据的ID标识 type()?获取当前数据的类型字符串 print()?打印数据 input()?获取输入的数据 isinstance()?检测是否为指定的数据类型
11.3.3 数学相关函数
- abs() 返回一个数的绝对值
- sum(iteralble[,start])
从start开始自左向右对iterable中的项求和并返回总值 print(sum([1,5,3,8]))
- 获取最大,最小值 max(),min() print(max([6,9,1])) print(max(6,9,1,88))
- 幂运算 返回x的y次幂,p为取余 pow(x,y,p)
- round(number[,ndigits])
返回number舍入到小数点后ndigits位精度的值 若ndigits被省略或为None,返回最接近输入值的整数 r = round(3.1415926,6) print(r)
- round(2.5) 奇进偶退 1.5=2,2.5=2
print(round(2.5)) #2
print(round(2.6)) #3
print(round(3.6)) #4
11.4 进制相关函数及字符集(了解)
bin()?数值类型转为二进制 int()?二进制转为整型
oct()?转为八进制?01234567 hex()?转为十六进制?0123456789abcdef
ascii?字符转换 A-Z 65-90 a-z 97-122 0-9 48-57 将字符转为ascii print(ord('a')) 将ascii转为字符 print(chr(65))
Unicode
12 内置函数-高阶函数
12.1 sorted()排序
运行原理:把可迭代数据里的元素,一个一个取出来,放到key函数中进行处理,并按照函数中return的结果进行排序,返回一个新的列表
参数:iterable 可迭代对象(容器类型数据,range数据序列,迭代器)
reverse 可选,是否反转,默认为False
key 可选,函数,可自定义或内置
返回值:**排序后的结果**
arr = [3,7,-9,8,23,4]
res = sorted(arr,reverse=True)
re = sorted(arr,key=abs)
print(res)
print(re) # [3, 4, 7, 8, -9, 23]
# 自定义函数
def fu(n):
return n % 2
r = sorted(arr,key=fu)
print(r)
arr = [3,7,-9,8,23,4]
R = sorted(arr,key=lambda x:x%2)
print(R)
12.2 map()
功能:对传入的可迭代数据中的每个元素进行处理,返回一个新的迭代器
参数:func 函数,自定义|内置函数
iterables:可迭代数据
返回值:**迭代器**
- 把一个字符串数字的列表转为整型的数字列表
varlist = ['1','2','3','4']
newlist = []
for i in varlist:
newlist.append(int(i))
print(newlist)
# map()函数处理
res = map(int,varlist)
print(res,type(res)) # 返回的是迭代器!!
print(tuple(res)) #!!
print(set(res))
- [1,2,3,4] ==> [1,4,9,16]
alist = [1,2,3,4]
res1 = map(lambda x:x**2,alist)
print(list(res1))
- ['a','b','c','d'] ==> [65,66,67,68]
blist = ['a','b','c','d']
re2 = map(lambda x:ord(x)-32,blist)
print(list(re2))
12.3 reduce()
from functools import reduce reduce(function, iterable[, initializer])
功能:每次从iterable中取出两个元素,放入到func函数中进行处理,得出一个计算结果,
然后把这个计算结果和iterable中的第三个元素,放入到func函数中继续运算,
得出的结果和之后的第四个元素,加入到func函数中进行处理,以此类推,直到最后元素都参与了运算
参数:func: 内置函数、自定义函数
iterable:可迭代对象
返回值:最终的运算处理结果
注意:使用reduce函数时,需要导入from functools import reduce
实例?1.?[5,2,1,1]?==>?5211?整型:
# 普通方法
varlist = [5,2,1,1]
res = ' '
for i in varlist:
res += str(i)
res = int(res)
print(res,type(res))
# 使用reduce
def myfunc(x,y):
return x*10+y
res = reduce(myfunc,varlist)
print(res,type(res))
实例?2.?字符串转为数字不使用int函数?'456'?==?>?456
from functools import reduce
# 定义函数,给定一个字符串数字,返回一个整型的数字
def fuc(s):
vardict = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7}
return vardict[s]
# 1.先使用map函数把数字字符串,转为整型的数字
it1 = map(fuc,'456')
# 2.把数字列表中的值,使用lambda进行二次处理
it2 = reduce(lambda x,y:x*10+y, it1)
print(it2)
12.4 filter() 过滤器
filter(func,iterable)
功能::过滤数据,把iterable中的每个元素拿到func函数中进行处理,若函数返回True就保留,否则丢弃
参数:func 自定义函数
iterable 可迭代数据
返回值:保留下来的数据组成的 迭代器
示例:保留所有的偶数,丢弃所有的奇数
varlist = [1,2,3,4,5,6,7,8,9]
# 普通方法
newlist = []
for n in varlist:
if n % 2 == 0:
newlist.append(n)
print(newlist)
# 使用filter
def fun(n):
if n % 2 == 0:
return True
else:
return False
it = filter(fun,varlist)
print(it)
* 另一版
it = filter(lambda x:True if x % 2 == 0 else False , varlist)
print(it,list(it))
|