本质上来说生成器迭代器都是一种数据类型,如果你直接打印生成器是无法得出值的,会得到一串内存地址,即一个对象
想要得到生成器的值必须要用for或者next,list等来获取 生成器
生成器就是一个可迭代对象
本质上就是一种数据类型
表现形式有两种
生成器函数: 使用yield 代替 return,但是可以返回多次值
调用之后函数内的代码不执行,返回生成器
每从生成器中取一个值就执行一段,遇到yield就停止
如何从生成器取值:
for: 如果没有break就可一直取到最后
next:每次取一个,首次使用时激活生成器
send:不能用在第一个,取下个值会给上个位置传一个新的值
数据类型强制转换: 会一次把所有的数据读到内存中
生成器表达式
(条件成立的放在生成器的值 for i in 可迭代的 if 条件)
  优点
生成器延迟计算,一次返回一个值,大数据量处理很好用
保存状态
提高代码可读性 基本的生成器函数
 def test():
yield 1
yield 2
yield 3
g = test()
print(g) # <generator object test at 0x00000000027F4E58>
print(g.__next__()) #
print(next(g)) # 2
生成器的一次性
 def test():
for i in range(4):
yield i
t = test()
t1 = (i for i in t)
print(list(t1)) # [0, 1, 2, 3] 生成器是第一次性的。
print(list(t1)) # [] 生成器是第一次性的。再次使用就无法获取了
迷惑操作
 def test():
for i in range(4):
yield i
t = test()
t1 = (i for i in t)
t2 = (i for i in t1) # 生成器在产生的时候,并不会有任何的操作
# 生成器是按需取值,因此一开始建立并没有使用,是无值的
print(list(t1)) # [0, 1, 2, 3] 生成器被遍历使用了,才会被消耗掉
print(list(t2)) # []
生成器表达式
 laomuji = ("鸡蛋%s" % i for i in range(10)) # 生成器表达式
print(laomuji) # <generator object <genexpr> at 0x0000000002814E58>
print(laomuji.__next__()) # 鸡蛋0
print(next(laomuji)) # 鸡蛋1

列表解析
数据量比较大的时候不要用,很笨重   原有的正常操作,比较多代码而且很啰嗦
 egg_list = []
for i in range(10):
egg_list.append("鸡蛋%s" %i)
print(egg_list)
  使用列表解析后
 l = ["鸡蛋%s" %i for i in range(5) ]
l1 = ["鸡蛋%s" %i for i in range(5) if i>2 ]
# l2 = ["鸡蛋%s" %i for i in range(10) if i>5 else i] # 不存在4元表达式
print(l) # ['鸡蛋0', '鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4']
print(l1) # ['鸡蛋3', '鸡蛋4']
# print(l2) # SyntaxError: invalid syntax

day13 生成器 三元运算 列表解析的更多相关文章

  1. python迭代器 生成器 三元运算 列表解析

    1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优 ...

  2. Day 21 三元表达式、生成器函数、列表解析

    知识点程序: #! /usr/bin/env python # -*- coding: utf-8 -*- # __author__ = "DaChao" # Date: 2017 ...

  3. python的迭代器、生成器、三元运算、列表解析、生成器表达式

    一 迭代的概念 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前 ...

  4. Python开发——函数【迭代器、生成器、三元表达式、列表解析】

    递归和迭代 小明问路篇解释说明 递归:小明——>小红——>小于——>小东:小东——>小于——>小红——>小明 小明向小红问路,因小红不知道,所以向小于问路,因小于不 ...

  5. day4 内置函数 迭代器&生成器 yield总结 三元运算 闭包

    内置函数: 内置函数 # abs()返回一个数字的绝对值.如果给出复数,返回值就是该复数的模. b = -100 print(b) print(abs(b)) # all() 所有为真才为真,只要有一 ...

  6. Python 迭代器之列表解析与生成器

     [TOC] 1. 列表解析 1.1 列表解析基础 列表解析把任意一个表达式应用到一个迭代对象中的元素 Python内置ord函数会返回一个字符的ASCII整数编码(chr函数是它的逆过程, 它将A ...

  7. Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器

    一.三元运算 三元运算又称三目运算,是对简单的条件语句的简写,如: 简单条件处理: if 条件成立: val = 1 else: val = 2 改成三元运算 val = 1 if 条件成立 else ...

  8. Python列表解析与生成器表达式

    Python列表解析 l = ["egg%s" %i for i in range(100) if i > 50] print(l) l= [1,2,3,4] s = 'he ...

  9. python列表解析和生成器表达式

    列表解析作为动态创建列表的强大工具,值得学习. 列表解析技术之前的状况--函数式编程. lambda.filter(), map() enumerate, sorted, any, all, zip ...

随机推荐

  1. 二、java三大特性--继承

    在讲解之前我们先看一个例子 Husband.java public class Husband { private String name; private String sex; privatein ...

  2. LeetCode263:Ugly Number

    public bool IsUgly(int num) { if(num<1) return false; while(num>1) { if(num%2==0) { num=num/2; ...

  3. 51Nod 1443 路径和树

    还是一道很简单的基础题,就是一个最短路径树的类型题目 我们首先可以发现这棵树必定满足从1出发到其它点的距离都是原图中的最短路 换句话说,这棵树上的每一条边都是原图从1出发到其它点的最短路上的边 那么直 ...

  4. [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子

    [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子$ cat customers.txt 1 Ali us 2 Bsb ca 3 Carls mx $ hive h ...

  5. ABP module-zero +AdminLTE+Bootstrap Table+jQuery权限管理系统第十五节--缓存小结与ABP框架项目中 Redis Cache的实现

    返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 缓存 为什么要用缓存 为什么要用缓存呢,说缓存之前先说使用缓存的优点. 减少寄宿服务器的往返调用(round-tr ...

  6. 【ML】ICML2015_Unsupervised Learning of Video Representations using LSTMs

    Unsupervised Learning of Video Representations using LSTMs Note here: it's a learning notes on new L ...

  7. 《Linux内核设计与实现》第八周读书笔记——第四章 进程调度

    <Linux内核设计与实现>第八周读书笔记——第四章 进程调度 第4章 进程调度35 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间,进程调度程序可看做在可运行态进程之间分配 ...

  8. Github介绍

    Git是一个分布式的版本控制系统,最初由LinusTorvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.包括Rubinius和Mer ...

  9. 四则运算安卓版ver.mk3

    在原有的基础上做了些许改动以及添加了一点小功能,以下是代码: package com.example.add; import java.io.File; import com.example.add. ...

  10. 第一次Spring总结

    第一阶段:下载了类似app使用,并做了对比,分析,对自己的app有了一些构思,完成了环境的配置.在这一阶段,一开始只有两个女生显得有点弱,面对从未接触过的app项目,首先就是配置环境方面的,在经过班上 ...