Python3 教程 第8页
Python3 数字 | Python 内置函数 描述 min() 方法返回给定参数的最小值,参数可以为序列。 语法 以下是 min() 方法的语法: min( x, y, z, .... ) 参数 x — 数值表达式。 y — 数值表达式。 z — 数值表达式。 返回值 返回给定参数的最小值。 实例 以下展示了使用 min() 方法的实例: #!/usr/bin/python3 print ("min(80, 100, 1000) : ", min(80, 100, 1000)) print ("min(-20, 100, 400) : ", min(-20, 100, 400)) print ("min(-80, -20, -10) : ", min(-80, -20, -10)) print ("min(0, 100, -400) : ", min(0, 100, -400)) 尝试一下 以上实例运行后输出结果为: min(80, 100, 1000) : 80 min(-20, 100, 400) : -20 min(-80, -20, -10) : -80 min(0, 100, -400) : -400 Python3 数字 | Python 内置函数
Python3 字符串 | Python 内置函数 描述 len() 方法返回一个对象的长度(元素个数),这里的对象可以是序列(如 string、bytes、tuple、list 或 range 等),也可以是集合(如 dictionary、set 或 frozen set 等)。 语法 len()方法语法: len(seq)#或者 len(set) 参数 可以是序列(如 string、bytes、tuple、list 或 range 等) 也可以是集合(如 dictionary、set 或 frozen set 等) 实际上,只要自定义的类实现了__len__()方法,就可以使用len()来获取这个对象的长度!__len__()是Python中的一个特殊方法,用于返回对象的长度或元素个数。如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。 返回值 返回序列或者集合的长度(元素的个数)。 实例 以下实例展示了len()的使用方法: #!/usr/bin/python str = "W3CSchool example....wow!!!" print("字符串长度: ", len(str)) list = ["w3cschool","编程狮","python"] print("列表元素个数: ", len(str)) dict = {"w3cschool":"编程平台","python":"Django"} print("字典元素个数: ", len(dict)) 以上实例输出结果如下: 字符串长度: 27 列表元素个数: 27 字典元素个数: 2 Python3 字符串 | Python 内置函数
Python3 内置函数 描述 Python3 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。 我们可以使用 list() 转换来输出列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。 zip 方法在 Python 2 和 Python 3 中的不同:在 Python 2.x zip() 返回的是一个列表。 如果需要了解 Pyhton2 的应用,可以参考 Python zip()。 语法 zip 语法: zip([iterable, ...]) 参数说明: iterabl — 一个或多个迭代器; 返回值 返回一个对象。 实例 以下实例展示了 zip 的使用方法: >>> a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) # 返回一个对象 >>> zipped <zip object at 0x103abc288> >>> list(zipped) # list() 转换为列表 [(1, 4), (2, 5), (3, 6)] >>> list(zip(a,c)) # 元素个数与最短的列表一致 [(1, 4), (2, 5), (3, 6)] >>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式 >>> list(a1) [1, 2, 3] >>> list(a2) [4, 5, 6] >>> Python3 内置函数
Python 内置函数 描述 all() 函数用于判断一个列表中的所有元素是否为真(True)。 如果列表中的所有元素都为真(True或者可以转换为True),则返回True,否则返回False 注:元素除了 0、空、None、False 外都算 True。 为了便于理解,上述文本中使用了列表作为可迭代对象的替换。实际上这是片面的,all()函数接受的参数为可迭代的对象(iterable ),也就是说,以下这些类型都可以作为all()的参数: 1.list,tuple,dict、set、str2.generator,带yield的generator function,统称为iterator。生成器可以使用for可以被next函数调用并返回下一个值。 函数等价于: def all(iterable): for element in iterable: if not element: return False return True 它与 any()函数是一对功能相反的函数,可以简单的记为: all()全真才真, any()全假才假(刚好与与运算和或运算类似) 语法 以下是 all() 方法的语法: all(iterable) 参数 iterable — 可迭代的参数,包括.list,tuple,dict、set、str以及生成器生成的iterable对象。 返回值 如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False; 注意:空元组、空列表返回值为True,这里要特别注意。 实例 以下展示了使用 all() 方法的实例: print(all(['a', 'b', 'c', 'd'])) # 列表list,元素都不为空或0 # 返回 True print(all(['a', 'b', '', 'd'])) # 列表list,存在一个为空的元素 # 返回False print(all([0, 1 , 2, 3])) # 列表list,存在一个为0的元素 # 返回False print(all(('a', 'b', 'c', 'd'))) # 元组tuple,元素都不为空或0 # 返回 True print(all(('a', 'b', '', 'd'))) # 元组tuple,存在一个为空的元素 #返回 False print(all((0, 1, 2, 3))) # 元组tuple,存在一个为0的元素 # 返回 False print(all('')) # 字符串也是可迭代对象,可以作为all()的参数 # 返回 True print(all("w3cschool001")) # 但是字符串中的数字0,空字符串并不算 # 返回 True print(all([])) # 空列表 # 返回 True print(all(())) # 空元组...
Python 内置函数 描述 Python iter() 函数用来生成迭代器。 有些对象(尤其是自定义的对象)可以像数组一样读出数据,但本身不是可迭代对象,这个时候就可以使用iter()将其转换成可迭代对象。 在类中实现了如果只实现__getitem__()的对象可以通过iter()函数转化成迭代器但其本身不是可迭代对象。所以当一个对象能够在for循环中运行时,不能确定是Iterable对象。 语法 iter() 方法的语法有两种,分别是: iter(object) 和 iter(object, sentinel) sentinel参数用于指示迭代的停止条件。 参数 object:支持迭代的集合对象(在不传入sentinel参数时)或者可调用的对象(第二种情况)。 sentinel:如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。 返回值 迭代器对象。 实例 from typing import Iterable class LinearDataStructure: # 一个自己实现的线性表,未传参时默认为1,2,3 def __init__(self, data=[1, 2, 3]): self.data = data def get_data(self): return self.data def __getitem__(self,idx): return(self.data[idx]) # 第一种语法 lds = LinearDataStructure() print(isinstance(lds,Iterable)) # 这个线性表不是可迭代对象 print(isinstance(iter(lds),Iterable)) # 使用iter方法可以把这个线性表变成可迭代对象 # 第二种语法 def read_until(f, stop): return iter(lambda: f.readline().strip(), stop) with open('file.txt') as f: for line in read_until(f, ''): print(line) Python 内置函数
Python 内置函数 描述 Python dir() 函数不带参数时,返回当前作用域内的所有名称; 带参数时,返回参数的属性、方法列表。 如果对象实现了__dir__()方法,该方法将被调用。 如果对象没有实现__dir__(),该方法将最大限度地收集参数信息。 注意:因为 dir() 主要是为了便于在交互式shell中使用,所以它会试图返回人们感兴趣的名字集合,而不是试图保证结果的严格性或一致性,它具体的行为也可能在不同版本之间改变。 例如,当实参是一个类时,metaclass 的属性不包含在结果列表中。 语法 dir() 语法: dir(object) 参数说明: object:对象、变量、模块。 返回值 不带参数时,返回当前作用域中的所有名称。 返回模块的属性和方法列表。 实例 以下实例展示了 dir()在命令行中的使用方法: >>>dir() # 获得当前模块的属性列表 ['__builtins__', '__doc__', '__name__', '__package__', 'arr', 'myslice'] >>> dir([ ]) # 查看列表的方法 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] >>> dir()方法也可以使用在代码行内: print(dir()) print(dir([])) 运行结果如下: ['__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__'] ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__',...
Python 内置函数 描述 Python eval()函数用来执行一条字符串中的python表达式,并返回表达式的值。 简单的说,就是执行一行python代码。 语法 以下是 eval() 方法的语法: eval(expression[, globals[, locals]]) 参数 expression:表达式。 globals:变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。 locals:变量作用域,局部命名空间,如果被提供,可以是任何映射对象。 返回值 返回表达式计算结果。 实例 以下展示了使用 eval() 方法的实例: >>>x = 7 >>> eval( '3 * x' ) 21 >>> eval('pow(2,2)') 4 >>> eval('2 + 2') 4 >>> n=81 >>> eval("n + 4") 85 拓展 将字符串对应的名字的变量转换成该变量对应的值: >>> x='8' >>> x '8' >>> a=eval(x) >>> a 8 >>> b='a' # 等价于b='8' >>> c=eval(b) >>> c 8 >>> Python 内置函数
Python 内置函数 描述 any() 函数用于判断一个列表中的所有元素是否为假(False)。 如果列表中的所有元素都为假(True或者可以转换为True),则返回False,否则返回True 注:元素除了 0、空、None、False 外都算 True。 为了便于理解,上述文本中使用了列表作为可迭代对象的替换。实际上这是片面的, any()函数接受的参数为可迭代的对象(iterable ),也就是说,以下这些类型都可以作为 any()的参数: 1.list,tuple,dict、set、str 2.generator,带 yield的generator function,统称为iterator。生成器可以使用 for可以被 next函数调用并返回下一个值。 函数等价于: def any(iterable): for element in iterable: if element: return True return False 它与 all()函数是一对功能相反的函数,可以简单的记为: all()全真才真, any()全假才假(刚好与与运算和或运算类似) 语法 以下是 any() 方法的语法: any(iterable) 参数 iterable — 可迭代的参数,包括.list,tuple,dict、set、str以及生成器生成的iterable对象。 返回值 如果iterable的所有元素都为0、”、False或者iterable为空,all(iterable)返回False,否则返回True; 注意:空元组、空列表,空字符串返回值为False,这里要特别注意。 实例 以下展示了使用 any() 方法的实例: print(any(['a', 'b', 'c', 'd'])) # 列表list,元素都不为空或0 # 返回 True print(any(['a', 'b', '', 'd'])) # 列表list,存在一个为空的元素 # 返回False print(any([0, "" , False,None])) # 列表list,元素都为空或0或False或None # 返回False print(any(('a', 'b', 'c', 'd'))) # 元组tuple,元素都不为空或0 # 返回 True print(any(('a', 'b', '', 'd'))) # 元组tuple,存在一个为空的元素 #返回 Ture print(any((0, "" , False,None))) # 元组tuple,元素都为空或0或False或None # 返回 False print(any("w3cschool001")) # 字符串也是可迭代对象,可以作为any()的参数 # 返回 True print(any('0')) #字符串的0不算False # 返回 True print(any('')) # 空字符串会返回False # 返回 False print(any([])) #...
Python 内置函数 描述 type() 函数通常被用来判断对象的类型,在传入三个参数的时候它可以用来动态创建类。 本文着重介绍传入一个参数的情况,动态创建类请移步:python type()函数专题——动态创建类 另一个函数isinstance()方法也可以用来判断对象的类型。 isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系。 isinstance() 会认为子类是一种父类类型,考虑继承关系。 如果要判断两个类型是否相同推荐使用 isinstance()。 语法 以下是 type() 方法的语法: type(object) # 或者 type(name, bases, dict) 参数 单参数情况: object:一个对象 三参数情况: name:要动态创建的类的名称。 bases:继承于哪个父类(这是一个元组!)。 dict:要添加的属性和方法(这是一个字典!) 返回值 单参数情况:返回这个对象的类型 三参数情况:返回一个新的类型对象(一个动态创建的类)。 实例 以下展示了使用 type() 函数判断对象类型的实例: print("数值对象的变量类型:") print(type(1)) print('字符串对象的变量类型:') print(type('W3Cschool')) print('列表对象的变量类型:') print(type([2])) print('元组对象的变量类型:') print(type((1,2))) print('字典对象的变量类型:') print(type({0:'zero'})) print('判断两个对象的类型是否相等') x = 1 print(type(x) == int) 尝试一下 运行结果如下: 数值对象的变量类型: <class 'int'> 字符串对象的变量类型: <class 'str'> 列表对象的变量类型: <class 'list'> 元组对象的变量类型: <class 'tuple'> 字典对象的变量类型: <class 'dict'> 判断两个对象的类型是否相等 True 以下展示了使用type()函数动态创建一个类的代码: class Animal(): #一个父类,用来被继承的类。通常我们使用都是直接继承object类,但这边为了直观所以自己弄了一个类 #这个父类有一个name属性,一个get_name方法,一个breathe方法 name = "" def __init__(self,name): self.name = name def get_name(self): return self.name def breathe(): print("我可以呼吸") #使用动态创建类的方法创建一个people类,继承了animal类,需要多一个属性sex People = type("People",(Animal,) , {'sex':'M'}) # 我们定义了一个新类叫People,他继承于animal类,多了一个新的属性sex human = People('男人') #实例化这个类,让我们来看看他有什么表现吧 print(type(human)) # 返回类People的实例化对象human 的类型<class '__main__.People'>) print(dir(human))...
Python 内置函数 描述 isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。 isinstance()函数在使用时需要有一个已知类型的对象作为比较,比如要判断一个对象是不是列表,你需要传入一个列表对象 isinstance() 与 type() 区别: type() 不会认为子类是一种父类类型,不考虑继承关系。 isinstance() 会认为子类是一种父类类型,考虑继承关系。如果要判断两个类型是否相同推荐使用 isinstance()。 语法 以下是 isinstance() 方法的语法: isinstance(object, classinfo) 参数 object:实例对象。 classinfo:可以是直接或间接类名、基本类型或者由它们组成的元组。 在python3.10中,可以classinfo使用联合类型(union类型) 返回值 如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。 实例 以下展示了使用 isinstance 函数的实例: >>>a = 2 >>> isinstance (a,int) True >>> isinstance (a,str) False >>> isinstance (a,(str,int,list)) # 是元组中的一个返回 True True type() 与 isinstance() 的区别: class A: pass class B(A): pass isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False 拓展 对于基本类型来说,classinfo 可以是: int,float,bool,complex,str(字符串),list,dict(字典),set,tuple 要注意的是,classinfo 的字符串是 str 而不是 string,字典也是简写 dict。 实例: arg=123 isinstance(arg, int) #输出True isinstance(arg, str) #输出False isinstance(arg, string) #报错 Python 内置函数