Python之路Python内置函数、zip()、max()、min()
Python之路Python内置函数、zip()、max()、min()
一、python内置函数
abs()
求绝对值
例子
- print(abs(-2))
all()
把序列中每一个元素做布尔运算,如果全部都是true,就返回true,
但是如果是空字符串、空列表也返回true
例子
- print(all([1,2,'','']))
输出结果
- False
例子2
- print(all(''))
输出结果
- True
any()
把序列中每一个元素做布尔运算,如果有一个为true就返回true,
但是有两个false还是false
例子
- print(any([0,'']))
- print(any([0,'',1]))
输出结果
- False
- True
bin()
把十进制转换为二进制
例子
- print(bin(3))
输出结果
- 0b11
分析:其中“0b"代表二进制
bool()
判断布尔类型的,返回True或者False
bytes()
以一个字节的形式输出数据,这里的bytes是不可变数据类型
如果是整数,就输出长度为该整数长度的字节组
例子
- print(bytes(0))
- print(bytes(2))
- print(bytes(5))
输出结果
- b''b'\x00\x00'b'\x00\x00\x00\x00\x00'
如果是字符串,则必须制定编码方式进行编码
例子
- name='你好'
- print(bytes(name,encoding='utf-8'))
- print(bytes(name,encoding='utf-8').decode('utf-8'))
输出结果
- b'\xe4\xbd\xa0\xe5\xa5\xbd'<br>你好
分析:这里的第一行输出就是以utf-8的方式对“你好”进行编码,是二进制模式下的十六进制编码,这里是十六进制的形式,utf-8中三个字节代表一个汉字,所以前3个字节代表的是“你”
第二行输出的是对十六进制的字节进行解码,用“utf-8”的形式重新解码,所以这里被还原成“你好”
例子
- name='你好'
- print(bytes(name,encoding='gbk'))
- print(bytes(name,encoding='gbk').decode('gbk'))
输出结果
- b'\xc4\xe3\xba\xc3'
- 你好
分析:第一行输出是用"gbk"方式对“你好”进行编码,由于gbk是2个字符代表一个汉字,所以这里可以看到,前2个代表一个汉字,后2个代表一个汉字,
同样的这里也可以被解码重新还原为原字符串
bytearray()
以一个字节组的形式输出数据
用法与bytes()类似,但这里这个数组里的元素是可变的,bytes是不可变数据类型,而bytearray像名称一样可使用append等方法;
chr()
参数是(0~255)整数,返回的其实是ASCII码对应的字符
dict()
创建字典的函数
例子
- print(dict( a = "",b = "" ))
输出结果
- {'a': '', 'b': ''}
分析:这种创建字典的方式key只能是字符串,不能是数字、布尔值等,创建出的字典key是写入等式的前面,等式后面写的是value
例子2
- print(dict([("a",1),(2,3)]))
输出结果
- {'a': 1, 2: 3}
分析:这里是用可迭代对象创造字典,即通过二元组列表创建
dir()
打印某一个对象下面都有哪些方法
例子
- print(dir(str))
输出结果
- ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
divmod()
实现a除以b,然后返回商与余数的元组。如果两个参数a,b都是整数,那么会采用整数除法,结果相当于(a//b, a % b)。如果a或b是浮点数,相当于(math.floor(a/b), a%b)。
例子
- print(divmod(10,3))
输出结果
- (3, 1)
enumerate()
将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
语法
- enumerate(seq, [start=0])
seq--一个序列或者可迭代对象,start 下标的开始位置
例子
- li = ["nicholas","jack","pony"]
- for i in enumerate(li,1):
- print(i)
输出结果
- (1, 'nicholas')
- (2, 'jack')
- (3, 'pony')
eval()
将字符串str当成有效的表达式来求值并返回计算结果。
例子
- #字符串转换成字典
- print(eval('{"nick":1,"jack":2}'))
输出结果
- {'nick': 1, 'jack': 2}
计算字符串里的表达式的值
例子
- x,y = 1,2
- print(eval('x + y'))
输出结果
3
hash()
用来做哈希运算的,只要可hash就是不可变数据类型
不可hash的就是可变数据类型
哈希是一种算法,把文件内容进行一个运算,最终得出一个值
得出的结果长度是固定的,不能根据结果反推原来的内容
本函数返回对象的哈希值。返回的哈希值是使用一个整数表示,通常使用软件校验。
例子
- name = "nick"
- print(hash(name))
- name = "nicholas"
- print(hash(name))
-
输出结果
- 5166927391536352230
分析:对name进行哈希运算返回一个值,如果中途被修改,哈希值也会变化
help()
查看帮助,查看某个函数怎么用
例子
- print(help(dir))
查看dir的用法
hex()、oct()、bin()
bin()将十进制转换为二进制
hex()将十进制转换为十六进制
oct()将十进制转换为八进制
isinstance()
函数来判断一个对象是否是一个已知的类型,类似 type()。
例子
- print(isinstance(1,int))
- print(isinstance("a",str))
输出
- True
- True
分析:判断1是不是int类型,判断“a”是不是字符串类型
locals()、globals()
这两个函数主要提供,基于字典的访问局部和全局变量的方式。
globals打印全局变量,还有一些系统提供的全局变量
locals打印局部变量
例子
- {'b': 'nick '}
- ----------------
- {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x002EA550>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/06python/exercise/test2.py', '__cached__': None, 'a': 2, 'test': <function test at 0x02116CD8>}
分析:这里print(locals())打印的是{'b': 'nick '},获取的是局部变量,
print(globals())在输出的最后获取了'a': 2,其他都是系统提供的全局变量
ord()
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值
pow()
pow(x,y)方法返回 xy(x的y次方) 的值。
pow(x,y,z)方法是x的y次方得到一个值,之后再用这个值对z进行取余
例子
- print(pow(2,5,3))
- print(pow(2,5))
输出结果
- 232
reversed()
reversed函数返回一个反转的迭代器。即取反,取反的对象可以是列表、字符串、元组,或者range
例子
- print(reversed([1,2,3,4]))
- print(list(reversed([1,2,3,4])))
输出结果
- <list_reverseiterator object at 0x002EA570>[4, 3, 2, 1]
分析:第一行输出,直接打印reversed输出的是一个反转的迭代器,要用list方法可以进行显示列表。
round()
返回浮点数x的四舍五入值。
set()
创建一个集合
slice()
切片对象,主要用在切片操作函数里的参数传递。
语法
slice(start, stop[, step])
例子
- l = "hello world !"
- s1 = slice(0,4)
- print(l[s1])
输出结果
hell
例子2
- l = "aeiou world !"
- s2 = slice(0,4,2)
- print(l[s2])
输出结果
- 1
分析:这里加了步长。
sorted()
对所有可迭代的对象进行排序操作。内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
list 的 sort 方法返回的是对已经存在的列表进行操作
sorted 方法不能针对不同类型进行排序
例子
- l = [2,1,3,5,8]
- print(sorted(l))
输出结果
- [1, 2, 3, 5, 8]
sorted()语法
- sorted(iterable, key=None, reverse=False)
iterable -- 可迭代对象。key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中
reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
例子
- people=[
- {'name':'nicholas','age':18},
- {'name':'jack','age':53},
- {'name':'pony','age':46},
- {'name':'richard','age':44},
- ]
- print(sorted(people,key = lambda dic:dic["age"]))
- people=[
输出结果
- [{'name': 'nicholas', 'age': 18}, {'name': 'richard', 'age': 44}, {'name': 'pony', 'age': 46}, {'name': 'jack', 'age': 53}]
str()
将任意类型转换为字符串
sum()
对系列进行求和计算。
语法
- sum(iterable[, start])
例子
- li = [1,2,3,4,5]
- print(sum(li))
- print(sum(li,2))
输出结果
- 15
- 17
分析:第二行输出是先对列表求和,再加上参数2再次求和。
type()
查看某一对象的数据类型
例子
- msg = ""
- if type(msg) is str :
- msg = int(msg)
- res = msg + 5
- print(res)
vars()
对象object的属性和属性值的字典对象。
查看对象的属性和值,如果没有参数和locals功能一样。
如果有就显示该对象的所有方法名
- print(vars(int))
二、zip()
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表或者字典。
zip()可以传2个参数,只要是序列就可以(列表、元组、字符串)
例子
- print(zip(("a","b","c"),(1,2,3)))
- print(list(zip(("a","b","c"),(1,2,3))))
- print(list(zip(("a","b","c"),(1,2,3,4))))
- print(list(zip(("a","b","c","d"),(1,2,3))))
输出结果
- <zip object at 0x0216EB98>
- [('a', 1), ('b', 2), ('c', 3)]
- [('a', 1), ('b', 2), ('c', 3)]
- [('a', 1), ('b', 2), ('c', 3)]
分析:第一行输出的是zip的对象,要转换为列表用list的方法
zip的左右两个参数序列是一一对应的关系,如果有多的自动忽略
例子2
- p={'name':'nicholas','age':18,'gender':'man'}
- print(list(zip(p.keys(),p.values())))
输出结果
- [('name', 'nicholas'), ('age', 18), ('gender', 'man')]
分析:这样就可以把字典中的元素提取出来
例子
- print(dict(zip(("a","b","c"),(1,2,3))))
输出结果
- {'a': 1, 'b': 2, 'c': 3}
分析:这里可以直接将zip对象转为字典。
三、max() 、min()
max()求最大的值
例子
- dic = {"age1":18,"age4":25,"age2":19,"age3":28}
- print(max(dic))
- print(max(dic.values()))
- print(max(zip(dic.values(),dic.keys())))
输出结果
- age4
- 28
- (28, 'age3')
分析:print(max(dic))语句默认比较的是字典的key,进行字符串的比较,一个字符一个字符的比较,根据字符的ASCII码进行比较
第二行输出print(max(dic.values())),比较的是字典的value,直接输出最大的value
第三行输出是首先将字典用zip方法将字典的value和key组成一个一一对应的元组,然后直接比较这个元组的大小
具体
- dic = {"age1":18,"age4":25,"age2":19,"age3":28}
- v = zip(dic.values(),dic.keys())
- #这里也是一个可迭代对象
- for i in v:
- print(i)
输出结果
- (18, 'age1')
- (25, 'age4')
- (19, 'age2')
- (28, 'age3')
这里通过for循环可以看出zip(dic.values(),dic.keys())是一个元组
例子2
- l = [(5,"a"),(3,"b"),(2,"c")]
- print(max(l))
输出结果
- (5, 'a')
分析:这里是从第一个值进行比较,5、3、2进行比较,如果有结果,后面的就不用比较了
例子3
- l = ["a18","b21","c5"]
- print(max(l))
输出结果
分析:这里也是一个字符一个字符的比较。
max()的高级用法
max(iterable,key = func)
iterable--可迭代对象,func--对对象的元素处理逻辑
例子
- people=[
- {'name':'pony','age':1000},
- {'name':'jack','age':10000},
- {'name':'richard','age':9000},
- {'name':'nick','age':18},
- ]
- print(max(people,key = lambda x:x["age"]))
输出结果
- {'name': 'jack', 'age': 10000}
分析:这里是对列表中每个元素进行for循环,即字典进行取出“age”对应的value进行比较,同时输出value最大值的元素,与map函数进行for循环类似。
x["age"]是对列表的每个元素进行索引,而非对列表进行索引,因为这个max()函数对要处理的可迭代对象进行了类似for循环处理。
Python之路Python内置函数、zip()、max()、min()的更多相关文章
- python 内置函数zip,map,三元,lambda表达式
#内置函数zip(),将多个可迭代对象(集合等)按照顺序进行组合成tuple元祖,放在zip 对象进行存储,: #当参数为空时候,返回空 #如果 zip() 函数压缩的两个列表长度不相等,那么 zip ...
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
- python字符串——"奇葩“的内置函数
一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...
- python 类(object)的内置函数
python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...
- python3 之 内置函数Zip
python3 内置函数zip 一.简介: 该函数用于将多个可迭代对象作为参数,依次将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象.二.实例1: name = ['张三','李四', ...
- python学习之路-4 内置函数和装饰器
本篇涉及内容 内置函数 装饰器 内置函数 callable() 判断对象是否可以被调用,返回一个布尔值 1 2 3 4 5 6 7 8 9 10 11 num = 10 print(callabl ...
- python成长之路八 -- 内置函数
1,python内置函数 内置函数 abs() dict() help() min() setattr() all() dir() hex() next() slice() a ...
- Python 内置函数 -- zip(), sorted(), filter()和map()
内置函数1. zip() 打包(木桶效应)描述: zip() 函数用于将可迭代的对象作为参数, 将对象中对应的元素打包成一个个元组, 然后返回由这些元组组成的列表语法: zip([iterable, ...
- Python装饰器、内置函数之金兰契友
装饰器:装饰器的实质就是一个闭包,而闭包又是嵌套函数的一种.所以也可以理解装饰器是一种特殊的函数.因为程序一般都遵守开放封闭原则,软件在设计初期不可能把所有情况都想到,所以一般软件都支持功能上的扩展, ...
- 万恶之源 - Python装饰器及内置函数
装饰器 听名字应该知道这是一个装饰的东西,我们今天就来讲解一下装饰器,有的铁子们应该听说,有的没有听说过.没有关系我告诉你们这是一个很神奇的东西 这个有多神奇呢? 我们先来复习一下闭包 def fun ...
随机推荐
- leetcode690
class Solution { public: int getImportance(vector<Employee*> employees, int id) { ; map<int ...
- 在.jsp中非表单请求action的几种方式总结
转自:https://www.jb51.net/article/35621.htm 1 一: 复制代码 代码如下: <a href="userAction.do?flag=user_r ...
- Python基础学习四 函数
1.内置函数 Python内置了很多有用的函数,是可以直接调用的. 参考链接:https://docs.python.org/3/library/functions.html 调用函数的时候,如果传入 ...
- 如何解决quartz在集群下出现的资源抢夺现象
Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用于J2SE和J2EE应用中.它提供了巨大的灵活性而不牺牲简单性.你能够用它来为执行一个作业而创建简单的或复杂的调度,简单的说就是可以 ...
- interface vs abstract
[interface vs abstract] 1.interface中的方法不能用public.abstract修饰,interface中的方法只包括signature. 2.一个类只能继承一个ab ...
- ora-24247 网络访问被访问控制列表ACL拒绝
, upper_port ); COMMIT; END; / --3.创建访问控制列表(ACL)network_services, BEGIN DBMS_NETWORK_ACL_ADM ...
- Apache与Tomcat联系及区别
Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行.Apache是Web服务器而Tomcat是Java应用服务器. A ...
- maven学习总结-eclipse开发
一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如下图所示:
- c++ (proxy)代理模式
假设我们有几个具有相似的窗体,都包含关闭窗体(closeButton)和按钮单击事件(ClickButton)我们在处理时,不想直接操作每个窗体,可以请求代理. #include<iostrea ...
- SQL Server CLR全功略之一---CLR介绍和配置
Microsoft SQL Server 现在具备与 Microsoft Windows .NET Framework 的公共语言运行时 (CLR) 组件集成的功能.CLR 为托管代码提供服务,例如跨 ...