python学习手册14 迭代器和解析,第一部分

简介: 点击(此处)折叠或打开 #!/usr/bin/env python #-*- coding:utf8 -*- from __future__ import print_function #迭代器与解析,第一部分 #列表解析是对迭代中的项应用一个表达式的for循环的一种近似形式。

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. #-*- coding:utf8 -*-
  3. from __future__ import print_function
  4. #迭代器与解析,第一部分
  5. #列表解析是对迭代中的项应用一个表达式的for循环的一种近似形式。


  6. '''
  7. 迭代器初探
  8. for 循环可以用于python中任何的序列类型,如列表、元组、及字符串。实际上for循环可以用于任何可迭代类型。
  9. 迭代器包括:for循环、列表解析、in成员关系测试、map内置函数等。
  10. '''
  11. f=open('1.txt')
  12. print(f.readline())
  13. print(f.readline())
  14. print(f.readline())
  15. print(f.readline())
  16. print(f.readline())
  17. #文件有一个方法__next__实现差不多的功能,只不过结束时返回stopiteration
  18. #f=open('1.txt')
  19. #print(f.__next__())
  20. #逐行读取文件的最好方法就是不要去读,让for循环在每轮自动调用__next__从而进入到下一行。
  21. #这是读取文件的最佳方法,原因:运行最快,内存最省,书写简单。迭代器在python是以C语言的速度运行的。
  22. for line in open('1.txt'):
  23.     print(line.upper(),end='')

  24. '''
  25. 手工迭代:iter,next
  26.     基于可迭代对象X,next(X).__next__()

  27. '''
  28. f=open('1.txt')
  29. print(next(f))
  30. print(next(f))
  31. print(next(f))
  32. print(next(f))

  33. f=open('1.txt')
  34. print(iter(f) is f)
  35. print(next(iter(f)))
  36. print(next(f))

  37. L=[1,2,3]
  38. for x in L:
  39.     print(x,end=(' '))
  40. I=iter(L)
  41. while True:
  42.     try:
  43.         X=next(I)
  44.     except StopIteration:
  45.         break
  46.     print(X,end='_')

  47. '''
  48. 其它内置类型迭代器
  49. '''
  50. #遍历字典键的经典方法是明确的获取其键的列表。
  51. D={
  52.     'a':1,'b':2,'c':3
  53. }
  54. for key in D.keys():
  55.     print(key,':',D[key])
  56. #最近的python添加了字典的迭代器,可以直接使用for循环,不再需要使用keys方法。
  57. for key in D:
  58.     print(key,'=>',D[key])
  59. I=iter(D)
  60. print(I.next())
  61. print(I.next())
  62. print(I.next())
  63. #迭代协议也是我们必须把某些结果包装到一个list调用中一次性看到它们的值的原因
  64. #python中可以从左到右扫描的所有对象都以同样的方式实现迭代。
  65. print(list(D))
  66. #enumerate
  67. E=enumerate('talen')
  68. I=iter(E)
  69. print(list(I))

  70. '''
  71. 列表解析:初探 更简洁,更快。
  72. '''
  73. #列表解析使得早先许多例子变得过时了。列表解析在python中以C语言的速度执行。
  74. L=[1,2,3,4]
  75. L=[l + 10 for l in L]
  76. print(L)
  77. #在文件上使用列表解析
  78. f=open('1.txt')
  79. lines=f.readlines()
  80. print(lines)
  81. #去除后面的换行符rstrip()
  82. lines=[line.rstrip() for line in lines]
  83. print(lines)
  84. #最终优化后的语句,列表解析自动利用迭代协议构建了操作结果的一个列表.这是高效率的操作:大多数操作在python解释器内部完成,这经等价语句快得多。
  85. lines=[line.rstrip() for line in open('1.txt')]
  86. print(lines)
  87. lines=[line.upper() for line in open('1.txt')]
  88. print(lines)
  89. lines=[line.rstrip().upper() for line in open('1.txt')]
  90. print(lines)
  91. lines=[line.split() for line in open('1.txt')]
  92. print(lines)
  93. lines=[line.replace(' ','!') for line in open('1.txt')]
  94. print(lines)
  95. lines=[('talen' in line , line[0]) for line in open('1.txt')]
  96. print(lines)

  97. #扩展列表解析语法
  98. #列表解析语法允许任意数的for循环子句,每一个子句都有一个可选的if子句。
  99. #取出以'#'号开头的行
  100. lines=[line.rstrip() for line in open('1.txt') if line[0] == '#']
  101. print(lines)
  102. print([x+y for x in 'abc' for y in '123'])

  103. #其它迭代环境
  104. #用户定义的类也可以实现,for循环、列表解析、in成员关系测试、map内置函数以及像sorted,enumerate,reduce,zip调用,sum,any,all,max,min这样的内置函数也都使用了迭代协议。
  105. print('import' in open('1.txt'))
  106. print('python' in open('1.txt'))
  107. #python3.0中新的可迭代对象
  108. #range迭代器
  109. #map,,filter可迭代对象
  110. #字典迭代器


点击(此处)折叠或打开

  1. /usr/bin/python2.7 /home/talen/PycharmProjects/untitled/14.py
  2. #!/usr/bin/env python

  3. #-*- coding:utf8 -*-

  4. from __future__ import print_function




  5. #!/USR/BIN/ENV PYTHON
  6. #-*- CODING:UTF8 -*-
  7. FROM __FUTURE__ IMPORT PRINT_FUNCTION

  8. #!/usr/bin/env python

  9. #-*- coding:utf8 -*-

  10. from __future__ import print_function



  11. True
  12. #!/usr/bin/env python

  13. #-*- coding:utf8 -*-

  14. 1 2 3 1_2_3_a : 1
  15. c : 3
  16. b : 2
  17. a => 1
  18. c => 3
  19. b => 2
  20. a
  21. c
  22. b
  23. ['a', 'c', 'b']
  24. [(0, 't'), (1, 'a'), (2, 'l'), (3, 'e'), (4, 'n')]
  25. [11, 12, 13, 14]
  26. ['#!/usr/bin/env python\n', '#-*- coding:utf8 -*-\n', 'from __future__ import print_function\n', '\n']
  27. ['#!/usr/bin/env python', '#-*- coding:utf8 -*-', 'from __future__ import print_function', '']
  28. ['#!/usr/bin/env python', '#-*- coding:utf8 -*-', 'from __future__ import print_function', '']
  29. ['#!/USR/BIN/ENV PYTHON\n', '#-*- CODING:UTF8 -*-\n', 'FROM __FUTURE__ IMPORT PRINT_FUNCTION\n', '\n']
  30. ['#!/USR/BIN/ENV PYTHON', '#-*- CODING:UTF8 -*-', 'FROM __FUTURE__ IMPORT PRINT_FUNCTION', '']
  31. [['#!/usr/bin/env', 'python'], ['#-*-', 'coding:utf8', '-*-'], ['from', '__future__', 'import', 'print_function'], []]
  32. ['#!/usr/bin/env!python\n', '#-*-!coding:utf8!-*-\n', 'from!__future__!import!print_function\n', '\n']
  33. [(False, '#'), (False, '#'), (False, 'f'), (False, '\n')]
  34. ['#!/usr/bin/env python', '#-*- coding:utf8 -*-']
  35. ['a1', 'a2', 'a3', 'b1', 'b2', 'b3', 'c1', 'c2', 'c3']
  36. False
  37. False

  38. Process finished with exit code 0

1.txt

点击(此处)折叠或打开

  1. #!/usr/bin/env python
  2. #-*- coding:utf8 -*-
  3. from __future__ import print_function

目录
相关文章
|
5月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
355 1
|
5月前
|
存储 Java 数据处理
(numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
Numpy是什么? numpy是Python中科学计算的基础包。 它是一个Python库,提供多维数组对象、各种派生对象(例如掩码数组和矩阵)以及用于对数组进行快速操作的各种方法,包括数学、逻辑、形状操作、排序、选择、I/0 、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等等。 Numpy能做什么? numpy的部分功能如下: ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成由C、C++
496 1
|
5月前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
779 1
|
5月前
|
存储 Java 索引
(Python基础)新时代语言!一起学习Python吧!(二):字符编码由来;Python字符串、字符串格式化;list集合和tuple元组区别
字符编码 我们要清楚,计算机最开始的表达都是由二进制而来 我们要想通过二进制来表示我们熟知的字符看看以下的变化 例如: 1 的二进制编码为 0000 0001 我们通过A这个字符,让其在计算机内部存储(现如今,A 字符在地址通常表示为65) 现在拿A举例: 在计算机内部 A字符,它本身表示为 65这个数,在计算机底层会转为二进制码 也意味着A字符在底层表示为 1000001 通过这样的字符表示进行转换,逐步发展为拥有127个字符的编码存储到计算机中,这个编码表也被称为ASCII编码。 但随时代变迁,ASCII编码逐渐暴露短板,全球有上百种语言,光是ASCII编码并不能够满足需求
249 4
|
6月前
|
JavaScript Java 大数据
基于python的网络课程在线学习交流系统
本研究聚焦网络课程在线学习交流系统,从社会、技术、教育三方面探讨其发展背景与意义。系统借助Java、Spring Boot、MySQL、Vue等技术实现,融合云计算、大数据与人工智能,推动教育公平与教学模式创新,具有重要理论价值与实践意义。
|
6月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
344 2
|
5月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
610 0
|
6月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
1615 0
|
5月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。

推荐镜像

更多