编程语言
首页 > 编程语言> > python基础20-迭代器

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))

可迭代对象

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能够自动处理该错误 让循环正常结束

标签:__,.__,20,迭代,python,res,next,print
来源: https://www.cnblogs.com/zongliang-ya/p/16467583.html