博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python学习之老男孩python全栈第九期_day013知识点总结
阅读量:6331 次
发布时间:2019-06-22

本文共 3009 字,大约阅读时间需要 10 分钟。

# l = [1,2,3] # 索引 # 循环 for     # list     # dic     # str     # set     # tuple     # f = open()     # range()     # enumerate ''' print(dir([]))      # 告诉我列表的所有方法 print(dir({}))      # 告诉我字典的所有方法 print(dir(''))      # 告诉我字符串的所有方法 # 求以上三个方法的交集 ret = set(dir([]))&set(dir({}))&set(dir('')) print(ret) # 双下方法 print([1].__add__(([2]))) print([1]+ [2]) # 判断是否可迭代 print('__iter__' in dir(int)) print('__iter__' in dir(bool)) print('__iter__' in dir(list)) print('__iter__' in dir(dict)) print('__iter__' in dir(str)) print('__iter__' in dir(set)) print('__iter__' in dir(tuple)) print('__iter__' in dir(enumerate([],1))) ''' # 只要是能被for循环的数据类型就一定有__iter__方法 # print([].__iter__())           # 一个列表执行了__iter__()之后的返回值就是一个迭代器 # print(dir([])) # print(set(dir([].__iter__()))-set(dir([])))     # {'__next__', '__length_hint__', '__setstate__'} # print([1,2,'aa'].__iter__().__length_hint__())      # 元素个数 # l = [1,2,3] # iterator = l.__iter__() # print(iterator.__next__()) # print(iterator.__next__()) # print(iterator.__next__()) # 只要含有__iter__方法的都是可迭代的 # [].__iter__() 迭代器 --> __next__() # 通过next就可以从迭代器中一个一个的取值 # 只要含有__iter__方法的都是可迭代的 --> 可迭代协议 # 迭代器协议 --> 内部含有__next__和__iter__方法的就是迭代器 # print('__iter__' in dir([].__iter__())) # print('__next__' in dir([].__iter__())) # from collections import Iterable    # iterable 可迭代的 # from collections import Iterator    # iterator 迭代器 # print(isinstance([],Iterable))          # True 列表是可迭代的 # print(isinstance([],Iterator))          # False 列表不是迭代器 # 迭代器协议和可迭代协议 # 可以被for循环的都是可迭代的 # 可迭代的和迭代器都是什么样子的 # 可迭代的内部都有__iter__方法 # 迭代器一定是可迭代的,可迭代的不一定是迭代器 # 可迭代的.__iter__() 方法就可以得到一个迭代器 # 迭代器中的__next__()方法可以一个一个的获取值 # for 循环其实就是在使用迭代器 # iterator # 可迭代对象 # 直接给你内存地址 # 判断是不是迭代器,其实是为了使用for循环 # 当我们遇到一个新的变量,不确定能不能for循环时,就判断它是否可迭代 # 迭代器的好处:     # 从容器类型中一个一个的取值,会把所有的值都取到     # 可以节省内存空间 --> range(1000000000)         # 迭代器并不会在内存中再占用一大块内存,而是随着循环,每次生成一个         # 每次next,就给我一个 # range # f = open() # l = [1,2,3,4,5] # iterator = l.__iter__() # while 1: #     print(iterator.__next__()) # 生成器 # 生成器函数 --> 本质上就是我们自己写的函数 # 生成器表达式
# 普通函数 # def generator(): #     print(123) #     return 'a' # ret = generator() # print(ret) #----------------------------------------------------------------------------------------# # 生成器函数 # 只要含有yield关键字的函数都是生成器函数,yield只能在函数里,且yield不能与return同时出现 # def generator(): #     print(123) #     yield 'a' # # 生成器函数:执行之后会得到一个生成器作为返回值 # ret = generator() # print(ret) # print(ret.__next__()) # def generator(): #     print(123) #     yield 'a' #     print(222) #     yield 'b' #     print(333) #     yield [7,8,9] # ret = generator() # for i in ret: #     print(i) # print(ret) # print(ret.__next__()) # print(ret.__next__()) # print(ret.__next__()) def wahaha():     for i in range(2000000):         yield '娃哈哈%s'%i g = wahaha() count = 0 for i in g:     count += 1     print(i)     if count > 50:         break print('*',g.__next__()) print('**',g.__next__()) print('***',g.__next__()) print('***',g.__next__())

转载于:https://www.cnblogs.com/BlameKidd/p/9338720.html

你可能感兴趣的文章
实现表格分页
查看>>
Number Sequence HDU - 1711 (Hash或KMP)
查看>>
js保留两位小数方法总结
查看>>
20145234黄斐《Java程序设计》实验一—Java开发环境的熟悉(Linux + Eclipse)
查看>>
commont-net.jar 代码结构图
查看>>
从零开始机器学习比赛经验(bird分享)
查看>>
LiveUpdate Adminstrator配置手册
查看>>
[转]推荐分享22个优秀的项目管理与协作工具
查看>>
php tcp socket 学习汇总
查看>>
浪潮之巅第十一章 — 幕后的英雄:风险投资(Venture Capital)
查看>>
了解Flex 新框架 Robotlegs(2)initial
查看>>
HTML5之语义标签
查看>>
javascript下将字符类型转换成布尔值
查看>>
常用问题库(2)
查看>>
快速查询Python脚本语法
查看>>
POJ 1562:Oil Deposits
查看>>
JavaScript学习历程和心得
查看>>
FZU2177(dp)
查看>>
Castle ActiveRecord起步
查看>>
取消Windows server 2008关机提示备注的方法
查看>>