python基础20-迭代器
2022/7/12 14:24:26
本文主要是介绍python基础20-迭代器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今日学习
常见内置函数
[参考](内置函数 — Python 3.10.5 文档)
abs() | aiter() | all() | any() | anext() | ascii() | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin() | bool() | breakpoint() | bytearray() | bytes() | ||||||||||
callable() | chr() | classmethod() | compile() | complex() | ||||||||||
delattr() | dict() | dir() | divmod() | |||||||||||
enumerate() | eval() | exec() | ||||||||||||
fileter() | float() | format() | frozenset() | |||||||||||
getattr() | globals() | |||||||||||||
hasattr() | hash() | help() | hex() | |||||||||||
id() | input() | int() | isinstance() | issubclass | iter() | |||||||||
len() | list() | locals() | ||||||||||||
map() | max() | memoryview() | min() | |||||||||||
next() | ||||||||||||||
object() | oct() | open() | ord() | |||||||||||
pow() | print() | property() | ||||||||||||
range() | repr() | reversed() | round() | |||||||||||
setattr() | slice() | sorted() | staticmethod() | str()|set() | sum() | supper() | ||||||||
tuple() | type() | |||||||||||||
vars() | ||||||||||||||
zip() | ||||||||||||||
import() |
常见的内置函数
内置函数:提前定义好的 直接使用即可 很多内置函数的功能都非常的好用 # 1.abs() 求绝对值 # print(abs(-99)) # 99 -------------------------------------------------------- # 2.all()与any() 判断容器类型中的所有数据值对应的布尔值是否为True # all() 所有的数据值都为True的情况下 结果才是True # print(all([1, 2, 3, 4, 5, 0])) # False # print(all([1, 2, 3, 4, 5])) # True # any() 所有的数据值只要有一个为True 结果就是True # print(any([1, 2, 3, 4, 5, 0])) # True # print(any([1, 2, 3, 4, 5])) # True ------------------------------------------------------ # 3.bin() oct() hex() 十进制转其他进制 # print(bin(10)) # 0b1010 # print(oct(10)) # 0o12 # print(hex(10)) # 0xa ----------------------------------- # 4.int() 类型转换 其他进制转十进制 # print(int(0b1010)) # print(int(0o12)) # print(int(0xa)) ------------------------------------------------- # 5.bytes() 类型转换 # res = '现在有多苦 将来就有多轻松'.encode('utf8') # print(res) # res1 = res.decode('utf8') # print(res1) # res = bytes('现在有多苦 将来就有多轻松','utf8') # print(res) # res1 = str(res,'utf8') # print(res1) ------------------------------------------------------ # 6.callable() # call在IT专业名词中翻译成 调用>>>:加括号执行 # 判断某个变量是否可以加括号调用 # name = 'jason' # def index(): # print('from index') # print(callable(name)) # False # print(callable(index)) # True # 7.chr() ord() # 依据ASCII码表实现字符与数字的转换 # print(chr(65)) # A 65~90 # print(chr(97)) # a 97~122 # print(ord('A')) # 65 # print(ord('a')) # 97 ------------------------------------------- # 8.dir() # 获取对象内部可以通过句点符获取的数据 # print(dir(str)) ------------------------------------------ # 9.divmod() # 获取除法之后的整数和余数 """ 手上有很多数据 每页展示10条 需要多少页 通过代码自动计算 总数据 每页展示 需要多少页 100 10 10 99 10 10 101 10 11 898 10 ??? """ # real_num, more = divmod(898, 10) # if more: # real_num += 1 # print('总页数:%s' % real_num) ------------------------------------------------------ # 10.enumerate() # 枚举 # name_list = ['jason', 'kevin', 'oscar', 'jerry'] # 需求:循环打印出数据值并且对应的索引值 # for i, j in enumerate(name_list, 100): # 默认是从0开始 可以自定义 # print(i, j) ---------------------------------------------------------- # 11.eval() exec() # 能够识别字符串中python代码并执行 # res = 'print(123)' # eval(res) # 不识别复杂结构的代码 只能识别最简单的 # exec(res) # 能够识别复杂结构的代码 # res1 = "for i in range(10):print(i)" # eval(res1) # exec(res1) ----------------------------------------------------- # 12.hash() # 返回一串随机的数字(哈希值) # print(hash('jason')) # print(hash('123')) ---------------------------------------------------- # 13.help() # 查看帮助信息 # help(len) ----------------------------------------------------- # 14.isinstance() # 判断某个数据是否属于某个数据类型 # print(isinstance(123,int)) # True # print(isinstance(123,str)) # False --------------------------------------------- # 15.pow() # 幂指数 # print(pow(2, 3)) # 8 ----------------------------------------------------- # 16.round() # 大致:四舍五入 可以课下百度查询详细说明 # print(round(98.3)) # print(round(98.6))
-
内置函数分类
-
数学运算
-
abs:求数值的绝对值
>>> abs(-2) 2
♦ divmod:返回两个数值的商和余数abs:求数值的绝对值
>>> divmod(5,2) (2, 1) >> divmod(5.5,2) (2.0, 1.5)
♦ max:返回可迭代对象中的元素中的最大值或者所有参数的最大值
>>> max(1,2,3) # 传入3个参数 取3个中较大者 3 >>> max('1234') # 传入1个可迭代对象,取其最大元素值 '4' >>> max(-1,0) # 数值默认去数值较大者 0 >>> max(-1,0,key = abs) # 传入了求绝对值函数,则参数都会进行求绝对值后再取较大者 -1
♦ min:返回可迭代对象中的元素中的最小值或者所有参数的最小值
>>> min(1,2,3) # 传入3个参数 取3个中较小者 1 >>> min('1234') # 传入1个可迭代对象,取其最小元素值 '1' >>> min(-1,-2) # 数值默认去数值较小者 -2 >>> min(-1,-2,key = abs) # 传入了求绝对值函数,则参数都会进行求绝对值后再取较小者 -1
♦ pow:返回两个数值的幂运算值或其与指定整数的模值
>>> pow(2,3) >>> 2**3 >>> pow(2,3,5) >>> pow(2,3)%5
♦ round:对浮点数进行四舍五入求值
>>> round(1.1314926,1) 1.1 >>> round(1.1314926,5) 1.13149
♦ sum:对元素类型是数值的可迭代对象中的每个元素求和
# 传入可迭代对象 >>> sum((1,2,3,4)) 10 # 元素类型必须是数值型 >>> sum((1.5,2.5,3.5,4.5)) 12.0 >>> sum((1,2,3,4),-10) 0
-
类型转换
♦bool:根据传入的参数的逻辑值创建一个新的布尔值
>>> bool() #未传入参数 False >>> bool(0) #数值0、空序列等值为False False >>> bool(1) True
♦ int:根据传入的参数创建一个新的整数
>>> int() #不传入参数时,得到结果0。 0 >>> int(3) 3 >>> int(3.6) 3
♦ float:根据传入的参数创建一个新的浮点数
>>> float() #不提供参数的时候,返回0.0 0.0 >>> float(3) 3.0 >>> float('3') 3.0
♦ complex:根据传入参数创建一个新的复数
''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' >>> complex() #当两个参数都不提供时,返回复数 0j。 0j >>> complex('1+2j') #传入字符串创建复数 (1+2j) >>> complex(1,2) #传入数值创建复数 (1+2j)
♦ str:返回一个对象的字符串表现形式(给用户)
>>> str() '' >>> str(None) 'None' >>> str('abc') 'abc' >>> str(123) '123'
♦ bytearray:根据传入的参数创建一个新的字节数组
>>> bytearray('中文','utf-8') bytearray(b'\xe4\xb8\xad\xe6\x96\x87')
♦ bytes:根据传入的参数创建一个新的不可变字节数组
>>> bytes('中文','utf-8') b'\xe4\xb8\xad\xe6\x96\x87'
♦ memoryview:根据传入的参数创建一个新的内存查看对象
>>> v = memoryview(b'abcefg') >>> v[1] 98 >>> v[-1] 103
♦ ord:返回Unicode字符对应的整数
>>> ord('a') 97
♦ chr:返回整数所对应的Unicode字符
>>> chr(97) #参数类型为整数 'a' 12
♦ bin:将整数转换成2进制字符串
>>> bin(3) '0b11'
♦ oct:将整数转化成8进制数字符串
>>> oct(10) '0o12'
♦ hex:将整数转换成16进制字符串
>>> hex(15) '0xf'
♦ tuple:根据传入的参数创建一个新的元组
>>> tuple() #不传入参数,创建空元组 () >>> tuple('121') #传入可迭代对象。使用其元素创建新的元组 ('1', '2', '1'
♦ list:根据传入的参数创建一个新的列表
>>>list() # 不传入参数,创建空列表 [] >>> list('abcd') # 传入可迭代对象,使用其元素创建新的列表 ['a', 'b', 'c', 'd']
♦ dict:根据传入的参数创建一个新的字典
>>> dict() # 不传入任何参数时,返回空字典。 {} >>> dict(a = 1,b = 2) # 可以传入键值对创建字典。 {'b': 2, 'a': 1} >>> dict(zip(['a','b'],[1,2])) # 可以传入映射函数创建字典。 {'b': 2, 'a': 1} >>> dict((('a',1),('b',2))) # 可以传入可迭代对象创建字典。 {'b': 2, 'a': 1}
♦ set:根据传入的参数创建一个新的集合
>>>set() # 不传入参数,创建空集合 set() >>> a = set(range(10)) # 传入可迭代对象,创建集合 >>> a {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
♦ frozenset:根据传入的参数创建一个新的不可变集合
>>> a = frozenset(range(10)) >>> a frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
♦ enumerate:根据可迭代对象创建枚举对象
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) #指定起始值 [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
♦ range:根据传入的参数创建一个新的range对象
''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' >>> a = range(10) >>> b = range(1,10) >>> c = range(1,10,3) >>> a,b,c # 分别输出a,b,c (range(0, 10), range(1, 10), range(1, 10, 3)) >>> list(a),list(b),list(c) # 分别输出a,b,c的元素 ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 2, 3, 4, 5, 6, 7, 8, 9], [1, 4, 7]) >>
♦ iter:根据传入的参数创建一个新的可迭代对象
''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' >>> a = iter('abcd') #字符串序列 >>> a <str_iterator object at 0x03FB4FB0> >>> next(a) 'a' >>> next(a) 'b' >>> next(a) 'c' >>> next(a) 'd' >>> next(a) Traceback (most recent call last): File "<pyshell#29>", line 1, in <module> next(a) StopIteration
♦ slice:根据传入的参数创建一个新的切片对象
>>> c1 = slice(5) # 定义c1 >>> c1 slice(None, 5, None) >>> c2 = slice(2,5) # 定义c2 >>> c2 slice(2, 5, None) >>> c3 = slice(1,10,3) # 定义c3 >>> c3 slice(1, 10, 3)
♦ super:根据传入的参数创建一个新的子类和父类关系的代理对象
''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书! ''' #定义父类A >>> class A(object): def __init__(self): print('A.__init__') #定义子类B,继承A >>> class B(A): def __init__(self): print('B.__init__') super().__init__() #super调用父类方法 >>> b = B() B.__init__ A.__init__
♦ object:创建一个新的object对象
>>> a = object() >>> a.name = 'kim' # 不能设置属性 Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> a.name = 'kim' AttributeError: 'object' object has no attribute 'name'
-
可迭代对象
1.迭代如何理解 迭代就是更新换代,每次迭代都需要基于上一次的成果 eg:手机上面的软件更新其实专业名词>>>:软件版本迭代 -------------------------------------------- 2.代码演示 # 不属于迭代 # while True: # print('嘿嘿嘿') # 属于迭代 n = 0 while n < 10: print(n) n += 1 -------------------------------- 3.如何判断可迭代对象 内置有__iter__方法的都叫做可迭代对象 1.内置是什么意思 通过句点符直接能够点出来的东西都叫内置 2.__XXX__ 针对双下划线开头双下划线结尾的方法 统一读作双下XXX # int # 整型不是可迭代对象 # float # 浮点型不是可迭代对象 # str # 字符串是可迭代对象 # list # 列表是可迭代对象 # dict # 字典是可迭代对象 # tuple # 元组是可迭代对象 # set # 集合是可迭代对象 # bool # 布尔值不是可迭代对象 # def index(): # 函数名不是可迭代对象 # print() #f = open(r'01 考题讲解.py','r',encoding='utf8') # 文件对象是可迭代对象
迭代器对象
作用: 迭代器对象给我们提供了一种不依赖于索引取值的方式 正是因为有迭代器对象的存在 我们才能对字典、集合这些无序类型循环取值 1.如何判断迭代器对象 内置有__iter__和__next__的对象都称为迭代器对象 ------------------------------------------------ 2.可迭代对象与迭代器对象的关系 可迭代对象调用__iter__方法之后就会变成迭代器对象 迭代器对象调用__iter__方法无论多少次还是迭代器对象本身 ------------------------------------------------------ 3.迭代器对象迭代取值 # res = 'jason'.__iter__() # res已经是迭代器对象 # print(res.__next__()) # j # print(res.__next__()) # a # print(res.__next__()) # s # print(res.__next__()) # o # print(res.__next__()) # n # print(res.__next__()) # 没有了直接报错 # d1 = {'name':'jason','pwd':123} # res = d1.__iter__() # print(res.__next__()) # print(res.__next__()) l1 = [11, 22, 33, 44, 55, 66, 77, 88] # 需求:不使用for循环 依次打印出列表中所有的数据值 # 1.先将列表变成迭代器对象 res = l1.__iter__() # 2.定义一个计数器 count = 0 # 3.编写while循环 while count < len(l1): print(res.__next__()) count += 1 ------------------------------------------------------------ 4.补充说明 4.1.迭代器反复使用 l = [11, 22, 33, 44] # print(l.__iter__().__next__()) # 11 每次都是产生了一个新的迭代器对象 # print(l.__iter__().__next__()) # 11 # print(l.__iter__().__next__()) # 11 # print(l.__iter__().__next__()) # 11 res = l.__iter__() print(res.__iter__().__next__()) # 11 每次使用的都是一个迭代器对象 print(res.__iter__().__next__()) # 22 print(res.__iter__().__next__()) # 33 print(res.__iter__().__next__()) # 44 4.2.针对双下方法 res = l.__iter__() # 可以简写iter(l) res.__next__() # 可以简写next(res1) 4.3.迭代器对象特殊的地方(******) 可迭代对象 迭代器对象 通过打印操作无法直接看出内部数据的情况 这个时候他们都能够帮你节省内存 相当于是一个工厂 你要一个数据就临时给你造一个
for循环的本质
语法结构 for 变量名 in 可迭代对象: for 循环代码块 1.for会自动将in后面的数据调用__iter__()变成迭代器对象 2.之后每次循环调用__next__()取值 3.最后没有值__next__()会报错 for能够自动处理该错误 让循环正常结束
这篇关于python基础20-迭代器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python