⼀. ⽣ 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颗星:
友情提⽰: 惰性机制, 不到最后不会拿值
这个题要先读⼀下. 然后⾃⼰分析出结果. 最后⽤机器跑⼀下.