三元表达式: 变量 = 值1 if 条件为真 else 值2   类似于:      res = '对了' if 1 > 2 else '错了'            print(res)            >>> '错了'   普通表示:  if 1 > 2:               print('对了')            else:               print('错了')

列表解析:   假如要生成0-9共10个数字,存放在列表中   类似于:      l = [i for i in range(10)]            print(l)            >>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

   普通表示:  l = []            for i in range(10):               l.append(i)            print(l)

列表解析与三元表达式共同使用:   假如要生成0-9共10个数字中大于5的数字,存放在列表中   l = [i for i in range(10) if i>5]   >>> [6, 7, 8, 9]

生成器:   为一种数据类型,该数据类型自动实现了迭代器协议(其他数据类型如字典、列表等,需要先执行__iter__()方法)所以生成器就是可迭代对象

生成器分类及在python中的表现形式:   1、生成器函数:同常规函数一样定义,但是使用yield语句(可以执行多次)而不是return语句返回结果。yield语句一次返回一个结果,在每个结果中间,挂起函数的状态,以便下次从它离开的地方继续执行;   def test():      for i in range(1,4):         yield i   a = test()   print(a.__next__())   >>> 1   print(a.__next__())   >>> 2   print(a.__next__())   >>> 3

   2、生成器表达式:类似于列表推导,但是生成器返回按需产生结果的一个对象,而不是一次构建一个结果列表   类似于猎豹列表解析,只是将[]改为()   l = (i for i in range(1,4))   print(l.__next__())   >>> 1   print(l.__next__())   >>> 2   print(l.__next__())   >>> 3

   所以生成器表达式配合for以及内置函数方便的使用一些功能   如求0~100的和   sum(i for i in range(101))

生成器的优点:   1、生成器的好处是延迟计算(按需产生结果),一次返回一个结果。也就是说,它不会一次生成所有的结果,这对于大数据量处理将会非常有用;   2、生成器还能提高代码的可读性。

注意事项:生成器只能遍历一次(遍历完成,函数失效),超出次数会抛出StopIteration异常

例子:有一个 人口普查.txt{'city':'A','people':1000}{'city':'B','people':10100}{'city':'C','people':12000}{'city':'D','people':10300}{'city':'E','people':102300}想要获取这五个城市的人口总和

def get_people(filename):   with open(filename,'r',encoding='utf-8-sig') as f:      for i in f:         yield eval(i)['people']

data_people = get_people('人口普查.txt')all_people = sum(data_people)print(all_people)

求一段文字中,每个单词出现的位置普通方法def index_words(text):   result = []   if text:      result.append(0)   for index,letter in enumerate(text,1):      if letter == ' ':         result.append(index)   return resultprint(index_words('helllo alex da sb'))

使用生成器def index_words(text):   try:      if text:         yield 0      for index,letter in enumerate(text,1):         if letter == ' ':            yield index   except StopIteration:   #捕获生成器没值异常      print('没了~~~')g = index_words('helllo alex da sb')print(g.__next__())print(g.__next__())print(g.__next__())print(g.__next__())

转载于:https://www.cnblogs.com/Meanwey/p/9741268.html

Python基础-----三元表达式、列表解析、生成器表达式相关推荐

  1. 三元表达式列表解析生成器表达式

    三元表达式 列表解析 生成器表达式 三元表达式 在作简单的判断时,三元表达式能简化代码: def max(x, y):if x > y:return xelse:return y # 这个函数可 ...

  2. 4 三元表达式 列表解析 生成器表达式

    三元表达式 #!/usr/bin/env python3 # _*_ coding:utf-8 _*_ # @File : 三元表达式 # @Version : 1.0'''三元表达式能实现简单的 i ...

  3. Python基础教程:列表解析

    Python中的解析 Python支持各种解析(comprehension)操作,比如列表解析.集合解析.元组解析.字典解析.它们根据某些元素来创建(推导)出一个新的列表.集合.元组.字典等.所以有的 ...

  4. Python基础语法【列表】

    Python基础语法[列表] 一.认识列表 1.什么是列表(list) 1)列表是python提供的容器型数据类型:将[]作为容器的标志,里面多个元素用逗号隔开:[数据1,数据2,-] [数据1,数据 ...

  5. 萌新向Python数据分析及数据挖掘 第一章 Python基础 第三节 列表简介 第四节 操作列表...

    第一章 Python基础 第三节 列表简介 列表是是处理一组有序项目的数据结构,即可以在一个列表中存储一个序列的项目.列表中的元素包括在方括号([])中,每个元素之间用逗号分割.列表是可变的数据类型, ...

  6. Python基础数据之列表知识(二)

    Python基础数据之列表知识(二) 一.列表的特点 二.列表的排序 三.列表的嵌套 1.嵌套的基本使用 2.嵌套的示例 四.列表的循环删除 五.列表相关知识链接 一.列表的特点 1.有序 2.独立 ...

  7. Python基础数据之列表

    Python基础数据之列表 一.列表介绍 1.简介 2.列表的特性 二.列表初识 三.for循环中使用 四.列表长度表示 五.向列表中添加内容 1.向列表中追加内容 2.向列表中插入内容 3.批量添加 ...

  8. Python基础学习之列表操作

    Python基础学习之列表操作 文章目录 Python基础学习之列表操作 1. 列表的增,删,改,查 1.1 列表的增加,常用的方法有:append, extent, incert 1.2 列表的删除 ...

  9. python基础数据类型之列表,元组(基础二)

    第四章 python基础数据类型之列表,元组(基础二) python常用数据类型之组合数据类型:列表,元组. 4.1 列表 list 列表介绍 列表是python的基础数据类型之⼀ ,其他编程语⾔言也 ...

最新文章

  1. android 上传pdf文件,Android 加载PDF文件
  2. 相关的验证的正则表达式
  3. 实验七——函数定义及调用总结
  4. centos安装Hue 3.7.0
  5. 实验2 SQL Server 表操作
  6. 导致出现404的原因以及解决方案
  7. Linux系统通过FTP进行文档基本操作【华为云分享】
  8. 分布式系统:数据库、操作系统、集群、协调、接口、多处理器、共享、I/O
  9. 一篇总结得超全的前端进阶文章!入门、技巧、方法、书籍、网站...一步到位!
  10. UVA722 LA5359 Lakes【DFS】
  11. 3-汇编语言中与内存访问相关的寄存器/操作(DS+数据段+SS/SP+栈相关操作)
  12. 空心心形图案的c语言程序,C语言写的各种心形图案_6583
  13. TIA博途_如何更新程序中的指令版本和CPU固件版本?
  14. 别人都不知道的“好用”网站,让你的效率飞快
  15. 微信小程序开发者工具 无法加载以下来源的扩展程序 问题解决
  16. 关于DM MPP的搭建
  17. linux如何把系统盘转换成gpt,如何更改/转换Ubuntu MBR驱动器到GPT,并从EFI启动Ubuntu?...
  18. 对“回调函数”的理解
  19. Windows微信刷朋友圈
  20. 用 Async 函数简化异步代码

热门文章

  1. mysql数据库的密码破解/用户授权/备份/图形化管理工具phpmyadmin
  2. Vue.js 框架的发展历程
  3. 数字逻辑习题(八) 根据JK触发器和CP波形,画出Q端的波形
  4. 频域稳定判据-也不过如此
  5. 【集合论】序关系 ( 链 | 反链 | 链与反链示例 | 链与反链定理 | 链与反链推论 | 良序关系 )
  6. C++ 写一个程序:按空格键暂停程序,再按空格键继续程序
  7. 记普林斯顿大学教授李凯:从中国工人到美国院士
  8. HBase region 定位原理
  9. 公务员考试取消35岁限制,就能消除职场年龄歧视?
  10. C++ 【学习笔记】 - 基础(class、inline、explict、new、delete、static、this、mutable、friend、operator、virtual)