Python学习之---内建函数isinstance()★issubclass()★sum()★sorted()★all()★any()的使用方法详解

Python 解释器内置了许多函数和类型,常用的列表如下:
菜鸟教程内建函数

- - 内建函数表 - -
★isinstance() ★issubclass() ★sum() ★sorted() memoryview()
★enumerate() ★reversed() ★zip() help() min()
★any() ★all() hex() next() slice()
ascii() divmod() id() object() dir()
bin() round() input() oct() staticmethod()
bool() eval() int() open() str()
breakpoint() exec() delattr() ord() set()
bytearray() filter() hash() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() dict()
compile() globals() map() abs() import()
complex() hasattr() max()

内建函数众多,这里讨论几个比较重要的(带★ 的),其他的需要了解的推荐参考Python的菜鸟教程,里面有详细的讲解.
isinstance(obj, class_or_tuple)
判断对象obj是否属于某种类型或者元组中列出的某个类型

isinstance(True, int)#  这里的是object,可以是任何一个对象,True只是等效为数字一,所以是在int里.也可以输入 十进制数字,字符串,列表等等,对应的后面也要更改.
>>>True

issubclass(class, class_or_tuple)
判断类型cls是否是某种类型的子类或元组中列出的某个类型的子类

issubclass(bool, int)  #函数的class表示必须是classs的参数,如 int bool str 
>>>True 

sum(iterable[, start])
从 start 开始,从左到右对 iterable 中的元素求和。 start 默认是 0,迭代的 item 通常是数字,并且不允许 start 的值为字符串。
对于有些情况,有比 sum() 更好的选择,
比如:连接字符串应该用 ‘’.join(sequence)。
浮点数求和用 math.fsum() 。
要连接一系列 iterable,请考虑使用 itertools.chain()。
sum 可以对迭代对象求和,或者加上求和的初始值
sum (iterable,start)

sum(range(10),10)
>>>55

sorted(iterable[, key][, reverse])
从 iterable 中的 item 中返回一个新的排序列表。
有两个可选参数,必须将其指定为关键字参数。
key 指定一个带有一个参数的函数,用于从每个列表元素中提取比较键:key=str.lower。默认值是 None(直接比较元素)。
reverse 是一个布尔值。如果设置为 True,那么列表元素按照每个比较被颠倒的s顺序进行排序。
内置的 sorted() 函数排序是稳定的。如果确保不会更改比较相等的元素的相对顺序,则排序是稳定的 。
举例:

sorted([1, 3, 5])  
sorted([1, 3, 5,'6'], key=int,reverse=True)  #字符串先转化成int格式进行排序
sorted({
     'c':1, 'b':2, 'a':1})  # 默认按照字典的key进行排序
注意与列表的sort比较
ls=[1,2,'3']
ls.sort(key=int,reverse =True)   #直接用sort将报错,因为内部格式不一致
>>>['3',2,1]#将字符串先转化成int格式进行排序

reversed(seq)
返回一个反向迭代器。seq 必须是具有 reversed() 方法或支持序列协议( len() 方法和整数参数从 0 开始的 getitem() 方法)的对象。

返回迭代器,每需要一个元素就返回一个元素

list(reversed("13579"))
{
      reversed((2, 4)) } # 有几个元素?
for x in reversed(['c','b','a']):
print(x)
reversed(sorted({
     1, 5, 9}))  

reversed(set(range(10)))# set是无序结构,所以不能反转.

enumerate(iterable, start=0)
返回一个枚举对象。 iterable 必须是一个序列,一个迭代器或其他支持迭代的对象。由 enumerate() 返回的迭代器的 next() 方法返回一个元组,该元组包含一个计数(从 start 开始,默认值为 0)以及遍历迭代获得的值。

for x in enumerate([2,4,6,8]):
    print(x)   
(0, 2)
(1, 4)
(2, 6)
(3, 8)
##  返回一个有起始值的计数元组

iter(iterable)
迭代器和取元素iter(iterable)、next(iterator[, default])
iter将一个可迭代对象封装成一个迭代器
next对一个迭代器取下一个元素。如果全部元素都取过了,再次next会抛StopIteration异常

it = iter(range(5))
next(it)
it = reversed([1,3,5])
next(it)

可迭代对象

● 能够通过迭代一次次返回不同的元素的对象。
所谓相同,不是指值是否相同,而是元素在容器中是否是同一个,例如列表中值可以重复的,[‘a’, ‘a’],虽然这个列表有2个元素,值一样,但是两个’a’是不同的元素,因为有不同的索引
● 可以迭代,但是未必有序,未必可索引
● 可迭代对象有:list、tuple、string、bytes、bytearray、range对象、set、dict、生成器、迭代器等
● 可以使用成员操作符in、not in,in本质上对于线性结构就是在遍历对象,非线性结构求hash

迭代器

● 特殊的对象,一定是可迭代对象,具备可迭代对象的特征
● 通过iter方法把一个可迭代对象封装成迭代器
● 通过next方法,迭代迭代器对象
● 生成器对象,就是迭代器对象

● zip(*iterables)
制作一个迭代器,用于聚合来自每个迭代器的元素。

返回元组的迭代器,其中第 i 个元组包含来自每个参数序列或迭代的第 i 个元素。当最短的输入迭代耗尽时,迭代器停止。使用单个迭代参数,它将返回 1 元组的迭代器。没有参数,它返回一个空的迭代器。
举例:

list(zip(range(10),range(10)))# 返回的列表里都是含两个元素的元组
list(zip(range(10),range(10),range(5),range(10)))# 列表里含4个元素的元组
dict(zip(range(10),range(10)))# 构建字典  
{
     str(x):y for x,y in zip(range(10),range(10))}# 构建字典 

与 * 操作符一起使用 zip() 可用于解构列表:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)

all & any

all()#任何元素都等效等于True,空的可迭代对象返回True
any()#其中任一元素等效于True,空的可迭代对象返回False
举例:

lst = [True, {
     1}, [2, 3], 5.1, 'abc']
print(all(lst), any(lst))
print(all([]), any([]))
print(all(lst + [0]), any(lst + [0]))

你可能感兴趣的:(Python学习历程,python学习)