PYTHON基础

10.内建函数

2020-12-17  本文已影响0人  Stone_説

1.内建函数
2.sorted函数
3.reversed函数
4.enumerate函数
5.zip函数
6.迭代器

1.内建函数

标识id

>>> id(1)
9736960
>>> a = [1,2,3]
>>> id(a)
140083621682944

哈希hash()

>>> hash(1)
1
>>> hash((1,2,3))
529344067295497451
>>> hash(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

isinstance(obj,class_or_tuple)
判断对象obj是否属于某种类型或者元组中列出的某个类型
isinstance(True,int)

>>> isinstance(1,int)
True
>>> isinstance(1,(int,float))
True

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

>>> issubclass(bool,int)
True
>>> issubclass(bool,float)
False

2.sorted函数

sorted(iterable[,key][,reverse])排序
返回一个新的列表,默认升序
reverse是反转

>>> sorted([1, 3, 5])
[1, 3, 5]
>>> sorted([1, 3, 5], reverse=True)
[5, 3, 1]
>>> sorted({'c':1, 'b':2, 'a':1})
['a', 'b', 'c']

3.reversed函数

翻转reversed(seq)
返回一个翻转元素的迭代器

>>> list(reversed("13579"))
['9', '7', '5', '3', '1']
>>> for x in reversed(['c','b','a']):
...     print(x)
a
b
c
>>> reversed(sorted({1, 5, 9}))
<list_reverseiterator object at 0x7f67c281f130>
>>> p = reversed(sorted({1, 5, 9}))
>>> next(p)
9
...
>>> next(p)
1
>>> next(p)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

4.enumerate函数

枚举enumerate(seq,start=0)
迭代一个序列,返回索引数字和元素构成的二元组
start表示索引开始的数字,默认是0

>>> for x in enumerate([2,4,6,8]):
...     print(x) 
(0, 2)
...
(3, 8)
>>> for x in enumerate("abcdef",10):
...     print(x,end=" ") 
(10, 'a') (11, 'b') (12, 'c') (13, 'd') (14, 'e') (15, 'f')

5.zip函数

拉链函数zip(*iterables)
像拉链一样,把多个可迭代对象合并在一起,返回一个迭代器
将每次从不同对象中取到的元素合并成一个元组

>>> list(zip(range(10),range(10)))
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9)]
>>> list(zip(range(3),range(3)))
[(0, 0), (1, 1), (2, 2)]
>>> list(zip(range(3),range(3),range(1),range(3)))
[(0, 0, 0, 0)]
>>> dict(zip(range(3),range(3)))
{0: 0, 1: 1, 2: 2}
>>> {str(x):y for x,y in zip(range(3),range(3))}
{'0': 0, '1': 1, '2': 2}

6.迭代器

6.1迭代器和取元素iter(iterable)、next(iterator[,default])

iter将一个可迭代对象封装成一个迭代器
next对一个迭代器取下一个元素,如果全部元素都取过了,再次next会抛出StopIteration异常

>>> it = iter(range(5))
>>> next(it)
0
...
>>> next(it)
4
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
>>> it = reversed([1,3,5])
>>> next(it)
5
...
1
>>> next(it)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
6.2可迭代对象

能够通过迭代一次次返回不同元素的对象
可以迭代,但是未必有序,未必可索引
可迭代对象有:list、tuple、string、bytes、bytearray、range、set、dict、生成器等
可以使用成员操作符in、not in、in本质上就是在遍历对象

>>> 3 in range(10)
True
>>> 3 in (x for x in range(10))
True
>>> {x:y for x,y in zip(range(4),range(4,10))}
{0: 4, 1: 5, 2: 6, 3: 7}
>>> 3 in {x:y for x,y in zip(range(4),range(4,10))}
True
>>> {x:y for x,y in zip(range(4),range(4,10))}
{0: 4, 1: 5, 2: 6, 3: 7}
>>> 4 in {x:y for x,y in zip(range(4),range(4,10))}
False
6.3迭代器

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

>>> for x in iter(range(3)):
...     print(x,end=" ")
0 1 2 
>>> g = (x for x in range(3))
>>> type(g)
<class 'generator'>
>>> next(g)
0
...
>>> next(g)
2
>>> next(g)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration
上一篇下一篇

猜你喜欢

热点阅读