一、列表生成式

  用来创建list的表达式,相当于for循环的简写形式

  语法: [表达式 for循环 判断条件]

  1. '''
  2. 普通写法
  3. '''
  4. def test():
  5. l= []
  6. for i in range(10):
  7. l.append(i*i)
  8. return l
  9. print(test())
  10.  
  11. '''
  12. 高级写法
  13. '''
  14. l = [x * x for x in range(10)]
  15. print(l)
  16.  
  17. '''
  18. 更高级的用法
  19. 格式:[操作 for i in range(x) 执行操作的条件(x)]
  20. '''
  21. ##得到0-9序列中偶数的平方
  22. l = [x * x for x in range(10) if x%2==0)]
  23. print(l)
  24. '''
  25. 高级解释:x*x 来源于0--9的for循环 但是 x要满足x%2==0
  26. '''
  1. ## 提取字符串中的数字,组成字符串
  2. l = 'asd123fds123'
  3. l2 = [x for x in l if x.isdigit()]
  4. x =''.join(x) ## 字符串拼接
  5. print(x)
  6. '''
  7. 解释:x 来源于for循环(遍历l), 但是x要是数字
  8. '''

二、生成器generator

    生成器和列表生成器很像,只是把中括号变成小括号

    生成器不会一次性生成所有数据,只有在调用的时候才生成。

    生成器不能通过切片、或者下标取数据,只能循环或者next()取数据--- 注意生成器的位置问题,类似于‘’句柄‘’

  1. ##生成器的语法和列表生成器很像
  2. g = (x*x for x in range(10))
  3. print(g) ## 输出是:generator对象
  4. print(type(generator)) ## 输出是:generator对象
  5.  
  6. print(next(g)) ## 获得下一个元素
  7.  
  8. ## 直接遍历generator对象
  9. for n in g:
  10. print(n)

二、可迭代对象和迭代器

    可迭代对象(Iterable):能被for遍历     不能next()

    迭代器(Iterator):        能被for遍历     能next()函数调用,不断返回下一个值

    迭代器对象表示一个数据流,可以被看做是一个序列,但是长度不可知。只是在需要的时候,才会计算。

它可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误

  1. ## 可以被for循环的对象,称为可迭代对象
  2. ## 可以被next()和for访问,称之为迭代器对象(用的时候才生成)
  3. from collections import Iterable,Iterator
  4.  
  5. ## 判断对象的类型-- 类似于type
  6. print(isinstance([],Iterable))## True 可迭代 对象
  7. print(isinstance([],Iterator))## Flase 不是可迭代器对象 不能next访问
  8.  
  9. print(isinstance('a',Iterable))##True
  10. print(isinstance('a',Iterator))##Flase
  11.  
  12. print(isinstance({},Iterable))##True
  13. print(isinstance({},Iterator))##Flase
  14.  
  15. ## 数值既不是可迭代对象,也不是迭代器对象
  16. ## 列表、字符串、字典、元祖 都是Iterable对象,不是Iterator对象
  17. ## generator、map、filter既是Iterable对象,也是Iterator对象
  18.  
  19. ##可迭代对象转为迭代器对象--- iter()
  20. it = iter([1,2,3])
  21. print(next(it)) ##输出1
  22.  
  23. print('----------------------')
  24. l = [(2,12),(6,23),(4,8)]
  25. l.sort(key=lambda x:x[1],reverse=True) ## sort(key,...)根据什么条件排序,排序条件
  26.  
  27. print(l)
  28. print(l[0][0])

type主要用于获取未知变量的类型,范围比较小
isinstance主要用于判断A类是否继承于B类,范围更大

python基础---列表生成器、迭代器等的更多相关文章

  1. python基础(八)生成器,迭代器,装饰器,递归

    生成器 在函数中使用yield关键字就会将一个普通的函数变成一个生成器(generator),普通的函数只能使用return来退出函数,而不执行return之后的代码.而生成器可以使用调用一个next ...

  2. python基础之生成器迭代器

    1 生成器: 为什么要有生成器? 就拿列表来说吧,假如我们要创建一个list,这个list要求格式为:[1,4,9,16,25,36……]这么一直持续下去,直到有了一万个元素的时候为止.如果我们要创建 ...

  3. python高级之生成器&迭代器

    python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象( ...

  4. 第三篇:python高级之生成器&迭代器

    python高级之生成器&迭代器   python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container ...

  5. 十三. Python基础(13)--生成器进阶

    十三. Python基础(13)--生成器进阶 1 ● send()方法 generator.send(value) Resumes the execution, and "sends&qu ...

  6. 十二. Python基础(12)--生成器

    十二. Python基础(12)--生成器 1 ● 可迭代对象(iterable) An object capable of returning its members one at a time. ...

  7. python基础——列表生成式

    python基础——列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 举个例子,要生成list [1, 2, 3, 4 ...

  8. python基础——列表推导式

    python基础--列表推导式 1 列表推导式定义 列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形 2 列表推导式语法 基本格式如下: [expr for va ...

  9. Python基础------列表,元组的调用方法

    Python基础------列表,元组的调用方法@@@ 一. 列表 Python中的列表和歌曲列表类似,也是由一系列的按特定顺序排列的元素组成的,在内容上,可以将整数,实数,字符串,列表,元组等任何类 ...

随机推荐

  1. maven中央仓库地址(支持db2,informix等)

    maven中央仓库地址(以下设置写在pom.xml文件里): <repositories> <repository> <id>nexus</id> &l ...

  2. Jekyll博客添加Valine评论

    Jekyll博客添加Valine评论 关于github搭建jekyl博客,在这里不做过多描述,详情参考: 百度搜索关键字:github搭建jekyll博客 官网:https://www.jekyll. ...

  3. jquery 判断浏览器版本

    如果你也是Jquery最初的使用者,那么你一定经历过这样判断浏览器的时代:$.browser.msie && $.browser.version,你目前使用的组件里可能还有应用.但是J ...

  4. PAT 1120 Friend Numbers

    1120 Friend Numbers (20 分)   Two integers are called "friend numbers" if they share the sa ...

  5. Centos7中网络及设备相关配置

    centos7中,不再赞成使用ifconfig工具,取而代之的是nmcli工具,服务管理也是以systemctl工具取代了service,这些之前版本的工具虽然在centos7中还可以继续使用,只是出 ...

  6. sqlserver数据库 视图相关

    1.首先创建一个视图 方法一:右键解决 方法二:脚本 create view view_test AS select * from t1 GO 2.删除视图 方法1:右键解决 方法2:脚本 if ex ...

  7. open() 文件读写简要记录

  8. Selenium自动化获取Http报文信息并判断当前API状态

    public int loadingFinishedCount(WebDriver driver){ LogEntries logs = driver.manage().logs().get(&quo ...

  9. http协议与https协议的前世今生

    一.Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ...

  10. 201671010142 2017-2 《java第十二章学习感悟》

    Swing 是一个为Java设计的GUI工具包. Swing是JAVA基础类的一部分. Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表. Swing提供许多比AWT更好的屏幕 ...