IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> Python Note — Day 5. 内置函数-高阶函数 -> 正文阅读

[数据结构与算法]Python Note — Day 5. 内置函数-高阶函数

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 数学相关函数

  1. abs() 返回一个数的绝对值
  1. sum(iteralble[,start])
    从start开始自左向右对iterable中的项求和并返回总值
    print(sum([1,5,3,8]))
  1. 获取最大,最小值 max(),min() print(max([6,9,1])) print(max(6,9,1,88))
  1. 幂运算 返回x的y次幂,p为取余 pow(x,y,p)
  1. 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:可迭代数据
返回值:**迭代器**
  1. 把一个字符串数字的列表转为整型的数字列表
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. [1,2,3,4] ==> [1,4,9,16]
  • 优化版
alist = [1,2,3,4]
res1 = map(lambda x:x**2,alist)
print(list(res1))
  1. ['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))
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:21:50  更:2021-09-27 14:23:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 5:35:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码