# 『Python基础-12』各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体. 共有三种推导,在Python2和3中都有支持: 目录: 列表(list)推导式 字典(dict)推导式 集合(set)推导式 1.列表推导式 1.1.使用[]生成list 基本格式: variable = [out_exp_res for out_exp in input_lis…
python基础-迭代器.生成器 1 迭代器定义 迭代的意思是重复做一些事很多次,就像在循环中做的那样. 只要该对象可以实现__iter__方法,就可以进行迭代. 迭代对象调用__iter__方法会返回一个迭代器,所谓的迭代器就是具有next方法的对象.(在调用next方法时不需要任何参数).在调用next方法时,迭代器会返回它的下一个值.如果next方法被调用,但迭代器没有值可以返回,就会引发一个StopITeration异常. 一个实现了__iter__方法的对象是可迭代的,一个实现了nex…
1.迭代器回顾 可迭代对象:Iterable 可以直接作用于for循环的对象统称为可迭代对象:Iterable.因为可迭代对象里面存在可迭代协议,所以才会被迭代 可迭代对象包括: 列表(list) 元组(tuple) 字典(dict) 集合(set) 字符串(str) 生成器(generator) 也可以说除了int和bool类型的数据以外,都是可迭代对象. 为什么他们能被迭代? 因为他们还有__iter__方法 可以使用 isinstance() 判断一个对象是否是 Iterable 对象.…
一.生成器 初识生成器 生成器的本质就是迭代器,在python社区中,大多数时候都把迭代器和生成器是做同一个概念. 唯一的不同就是: 迭代器都是Python给你提供的已经写好的工具或者通过数据转化得来的,(比如文件句柄,iter([1,2,3]). 生成器是需要我们自己用python代码构建的工具.最大的区别也就如此了. 生成器的构建方式 在 python 中有三种方式来创建生成器: 通过生成器函数 通过生成器推导式 python内置函数或者模块提供(其实1,3两种本质上差不多,都是通过函数的形…
一.迭代器 1.可迭代对象:遵循可迭代协议,内部含有__iter__方法的对象就叫做可迭代对象.(str.list.tulpe.dict.set) 查询数据类型的方法 s = 'laonanhai' print(dir(s)) # dir(数据类型)查询数据类型的所有方法 l1=[1, 2, 3, 4] print(dir(l1)) dic = {'1':'guo'} print(dir(dic)) 执行输出所有方法 判断是否是可迭代对象的两种方法: 1)print('__iter__' in…
1.三元表达式:如果成立返回if前的内容,如果不成立返回else的内容 name=input('姓名>>: ') res='SB' if name == 'alex' else 'NB' print(res) 2.列表推导式:l=['egg'+str(i) for i in range(1,11)] print(l) 3.生成器表达式: l=('egg'+str(i) for i in range(1,11) if i >6) for i in l: print(i)…
一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象. 二,为什么要用迭代器 优点: 1:迭代器提供了一种不依赖于索引的取值方式,…
(1)迭代器 可迭代对象和迭代器的解释如下: ''' 什么是对象?Python中一切皆对象,之前我们讲过的一个变量,一个列表,一个字符串,文件句柄,函数名等等都可称作一个对象,其实一个对象就是一个实例,就是一个实实在在的东西.那么什么叫迭代?其实我们在日常生活中经常遇到迭代这个词儿,更新迭代等等,迭代就是一个重复的过程,但是不能是单纯的重复(如果只是单纯的重复那么他与循环没有什么区别)每次重复都是基于上一次的结果而来.比如你爹生你,你生你爹,哦不对,你生你儿子,你儿子生你孙子等等,每一代都是不一…
三十.函数进阶 1.生成器    函数中有yield 的就是生成器函数(替代了return) 本质就是迭代器   一个一个的创建对象     节省内存 ①创建生成器       最后以yield结束 1. 通过⽣成器函数   2. 通过各种推导式来实现⽣成器 3. 通过数据的转换也可以获取⽣成器 ②send用法 send 和 __next__都是下一个的意思 但send可以给上一个yield 位置传值   不能给最后⼀个yield发送值. 在第⼀次执⾏⽣ 成器代码的时候不能使⽤send() ③y…
#!/usr/bin/env python # -*- coding:utf-8 -*- #列表推导式 取得100内可以被2整除且不能被3整除的数字 a=[i for i in range(100) if not (i % 2) and i % 3] print(a) #字典推到式 求出0-20 是否可以整除2 的字典表 b={i:i%2==0 for i in range(20)} print(b) #集合推到式 显示不重复的集合 c={i for i in {1,1,2,3,4,5,6,7,…