13.Python ⽣ генератор и генератор выражений ⽣

⼀. ⽣ Synthesizer

Что такое ⽣ генератор. ⽣ генератор сущность итераторы.
Есть три вида режима затвора в питоне, чтобы получить ⽣ синтезатор:
1. ⽣ генератор функции
2. Генератор достигается с помощью различных выводов ⽣
3 может быть также получены путем преобразования данных генератора ⽣
Поэтому особенно Во-первых, мы смотрим на ⼀ очень простую функцию:

Функция возврата в выход составляет ⽣ синтезатор

При выполнении результата и экран не ⼀ вида. Почему. Так как функция существует выход. Таким образом, эта функция ⼀ ⽣ Synthesizer

Функция. На этот раз мы не выполнять его, когда эта функция. Выполнить больше не является функцией. ⽽ это, чтобы получить этот ⽣ синтезатор.
Как использовать его? Подумайте о итераторах. ⽣ природа синтезатор итератор, так что мы можем направить Выполните __next __ () для выполнения
Следующий ⽣ генератор.

Таким образом, мы можем видеть, выход и возвращение ⼀ эффект как. Что разница? Выход сегментирован для выполнения его

Функция. Возврат это? Функция Stop YES непосредственно.

 

Когда программа закончена ⾏ погружен последний кадр выход. Таким образом, после того, как ⾯ продолжает попытки __next __ () ошибка в программе.

Ну ⽣ синтезатор закончил. ⽣ синтезатор Используйте это для чего? Давайте посмотрим на это требование ⼀ старый набор мальчик JACK JONES
⽣ купить 10000 комплектов школьной одежды. JACK JONES на более бетона. Изготовлены непосредственно из 10000 комплектов одежды. 

 

Но тогда проблема возникла. Старые парни не так много, чтобы узнать ⽣ ах. ⼀ -time дал мне так много. Я ⾥ куда положить ах. Неудобно

Ах. Наилучший эффект похож? Я хочу, чтобы один набор. Вы даете мне набор. ⼀ в общей сложности 10000 комплектов. Разве это не самый совершенный.  

Отличие: первый кадр второго рода является прямым ⼀ все из будут учитываться Использование памяти Использование ⽣ второй выстрел рода синтезатор ⼀ раз на ⼀ Использование более чем один ....

Сколько менее ⽣ процентов ⽣. Синтезатор для записи следующих двух пунктов до ⼀ ⼀ а. Не вернуться, __next __ (), где указательный палец, где охват детей.
В следующий раз, когда продолжение указатель стоимости приобретения.
Далее мы рассмотрим отправить средства правовой защиты, отправлять и __next __ () ⼀ вид может сделать ⽣ синтезатор для записи следующего Выполните выход. 

 

отправлять и __next __ () разницу:

1. посыла и следующий (), чтобы позволить ⽣ синтезатор идти вниз ⼀ раз
2. Направить выход может дать к предыдущей позиции переноса значения, вы не можете дать выход последних значений передачи кадра. Выполнение ⽣ в первый раз
成器代码的时候不能使⽤send()
⽣成器可以使⽤for循环来循环获取内部的元素:

⼆. 列表推导式, ⽣成器表达式以及其他推导式

⾸先我们先看⼀下这样的代码, 给出⼀个列表, 通过循环, 向列表中添加1-13 : 

替换成列表推导式: 

列表推导式是通过⼀⾏来构建你要的列表, 列表推导式看起来代码简单. 但是出现错误之

后很难排查.
列表推导式的常⽤写法:
[ 结果 for 变量 in 可迭代对象]
例. 从python1期到python14期写入列表lst:

我们还可以对列表中的数据进⾏筛选

筛选模式:
[ 结果 for 变量 in 可迭代对象 if 条件 ]

⽣成器表达式和列表推导式的语法基本上是⼀样的. 只是把[]替换成()

打印的结果就是⼀个⽣成器. 我们可以使⽤for循环来循环这个⽣成器:

⽣成器表达式也可以进⾏筛选:

 

⽣成器表达式和列表推导式的区别:

1. 列表推导式比较耗内存. ⼀次性加载. ⽣成器表达式⼏乎不占⽤内存. 使⽤的时候才分
配和使⽤内存
2. 得到的值不⼀样. 列表推导式得到的是⼀个列表. ⽣成器表达式获取的是⼀个⽣成器.
举个栗⼦.
同样⼀篮⼦鸡蛋. 列表推导式: 直接拿到⼀篮⼦鸡蛋. ⽣成器表达式: 拿到⼀个老⺟鸡. 需要
鸡蛋就给你下鸡蛋.
⽣成器的惰性机制: ⽣成器只有在访问的时候才取值. 说⽩了. 你找他要他才给你值. 不找他
要. 他是不会执⾏的.  

深坑==> ⽣成器. 要值得时候才拿值.

字典推导式:
根据名字应该也能猜到. 推到出来的是字典

集合推导式:

集合推导式可以帮我们直接⽣成⼀个集合. 集合的特点: ⽆序, 不重复. 所以集合推导式⾃
带去重功能

总结: 推导式有, 列表推导式, 字典推导式, 集合推导式, 没有元组推导式

⽣成器表达式: (结果 for 变量 in 可迭代对象 if 条件筛选)
⽣成器表达式可以直接获取到⽣成器对象. ⽣成器对象可以直接进⾏for循环. ⽣成器具有
惰性机制.
⼀个⾯试题. 难度系数500000000颗星:

友情提⽰: 惰性机制, 不到最后不会拿值

这个题要先读⼀下. 然后⾃⼰分析出结果. 最后⽤机器跑⼀下. 

рекомендация

отwww.cnblogs.com/xuweng/p/12178226.html