`
linvar
  • 浏览: 257531 次
  • 性别: Icon_minigender_1
  • 来自: 未定
社区版块
存档分类
最新评论

python2.x学习笔记(9) -- 条件和循环

阅读更多
1. if expression1:
       expr1_true_suite
   elif expression2:
       expr2_true_suite
   elif expressionN:
       exprN_true_suite
   else:
       none_of_the_above_suite

2. 条件表达式(即"三元操作符")
Python 2.5 集成的语法确定为: X if C else Y
>>> smaller = x if x < y else y

3. while expression:
       suite_to_repeat

4. 它提供了 Python 中最强大的循环结构.它可以遍历序列成员, 可以用在 列表解析 和 生成器表达式中, 它会自动地调用迭代器的 next()方法, 捕获 StopIteration 异常并结束循环(所有这一切都是在内部发生的).
for iter_var in iterable:
    suite_to_repeat

5. range() 内建函数
range(start, end, step =1)
xrange() 类似 range() , 不过当你有一个很大的范围列表时, xrange() 可能更为适合, 因为它不会在内存里创建列表的完整拷贝. 它只被用在 for 循环中, 在 for 循环外使用它没有意义。

6. 与序列相关的内建函数
sorted(), reversed(), enumerate(), zip()
其中两个函数( sorted() 和 zip() )返回一个序列(列表),
而另外两个函数(reversed() 和 enumerate() )返回迭代器(类似序列)

7. Python 提供了 pass 语句, 它不做任何事情 - 即 NOP

8. 可以在 while 和 for 循环中使用 else 语句. 它们是怎么工作的呢? 在循环中使用时, else子句只在循环完成后执行, 也就是说 break 语句也会跳过 else 块.

9. 迭代器和 iter() 函数
迭代器是在版本 2.2 被加入 Python 的, 它为类序列对象提供了一个类序列的接口.
Python 的迭代无缝地支持序列对象, 而且它还允许程序员迭代非序列类型, 包括用户定义的对象. 
迭代器用起来很灵巧, 你可以迭代不是序列但表现出序列行为的对象, 例如字典的 key , 一个文件的行, 等等. 当你使用循环迭代一个对象条目时, 你几乎不可能分辨出它是迭代器还是序列.你不必去关注这些, 因为 Python 让它象一个序列那样操作.

10. 根本上说, 迭代器就是有一个 next() 方法的对象, 而不是通过索引来计数. 当你或是一个循环机制(例如 for 语句)需要下一个项时, 调用迭代器的 next() 方法就可以获得它. 条目全部取出后, 会引发一个 StopIteration 异常, 这并不表示错误发生, 只是告诉外部调用者, 迭代完成.

11. reversed() 内建函数将返回一个反序访问的迭代器. enumerate() 内建函数同样也返回迭代器.另外两个新的内建函数, any() 和 all() , 在 Python 2.5 中新增, 如果迭代器中某个/所有条目的值都为布尔真时,则它们返回值为真.

12. 使用迭代器
>>> myTuple = (123, 'xyz', 45.67)
>>> i = iter(myTuple)
>>> i.next()
字典和文件是另外两个可迭代的 Python 数据类型. 字典的迭代器会遍历它的键(keys).
语句 for eachKey in myDict.keys() 可以缩写为 for eachKey in myDict

13. 另外, Python 还引进了三个新的内建字典方法来定义迭代: myDict.iterkeys() (通过 keys 迭代), myDict.itervalues() (通过 values 迭代), 以及 myDicit.iteritems() (通过 key/value 对来迭代). 注意 , in操作符也可以用于检 查字典的key是否存在,之前的布尔表达式myDict.has_key(anyKey) 可以被简写为 anyKey in myDict .

14. 文件对象生成的迭代器会自动调用 readline() 方法. 这样, 循环就可以访问文本文件的所有行 . 程序员可以使用更简单的for eachLine in myFile 替换 for eachLine in myFile.readlines() :

15. 记住,在迭代可变对象的时候修改它们并不是个好主意.

16. 如何创建迭代器
对一个对象调用 iter() 就可以得到它的迭代器. 它的语法如下:
iter(obj)
iter(func, sentinel )
如果你传递一个参数给 iter() , 它会检查你传递的是不是一个序列, 如果是, 那么很简单:根据索引从 0 一直迭代到序列结束. 另一个创建迭代器的方法是使用类, 一个实现了 __iter__() 和 next() 方法的类可以作为迭代器使用.
    如果是传递两个参数给iter() ,它会重复地调用func ,直到迭代器的下个值等于sentinel.

17. 列表解析( List comprehensions, 或缩略为 list comps ) 来自函数式编程语言 Haskell . 它是一个非常有用, 简单, 而且灵活的工具, 可以用来动态地创建列表.
[expr for iter_var in iterable]
[expr for iter_var in iterable if cond_expr]
这个语句的核心是 for 循环, 它迭代 iterable 对象的所有条目. 前边的 expr 应用于序列的每个成员, 最后的结果值是该表达式产生的列表. 迭代变量并不需要是表达式的一部分.
>>> [(x+1,y+1) for x in range(3) for y in range(5)]
>>> [x for x in seq if x % 2]
#计算单词个数:
>>> f = open('hhga.txt', 'r')
>>> len([word for line in f for word in line.split()])
91

18. 生成器表达式是列表解析的一个扩展.                            
生成器是特定的函数, 允许你返回一个值, 然后"暂停"代码的执行, 稍后恢复.

19. 生成器表达式在 Python 2.4 被引入, 它与列表解析非常相似,而且它们的基本语法基本相同;不过它并不真正创建数字列表, 而是返回一个生成器,这个生成器在每次计算出一个条目后,把这个条目“产生”(yield)出来. 生成器表达式使用了"延迟计算"(lazy evaluation), 所以它在使用内存上更有效. 我们来看看它和列表解析到底有多相似:
列表解析:
[expr for iter_var in iterable if cond_expr]
生成器表达式:
(expr for iter_var in iterable if cond_expr)
分享到:
评论

相关推荐

    python学习笔记

    ### Python学习笔记知识点详解 #### 一、程序基本编写方法 **1. 程序注释** - **单行注释**: 使用`#`符号。例如:`# 这是一条注释` - **多行注释**: 使用三个单引号`'''`或三个双引号`"""`包裹。例如: ```...

    Python 学习笔记.pdf

    这份学习笔记涵盖了Python的基本概念、数据类型、控制结构、函数、模块与包、面向对象编程等重要内容。下面将对这些知识点进行详细的解读。 ### 1. Python简介 - **Python** 是一种高级编程语言,因其简洁易读的...

    Python学习笔记(干货) 中文PDF完整版.pdf

    这份"Python学习笔记"涵盖了从环境搭建到基础语法,再到数据类型和控制结构等关键知识点,旨在为初学者提供全面的学习指导。 首先,1.1章节介绍了Python的基础,包括Python的起源和历史。Python是由Guido van ...

    Python学习笔记.pdf

    Python学习笔记 Python是一种高级的、解释型的编程语言,它支持对象oriented、命令式、函数式编程风格。下面是对Python语言的基本知识点的总结。 1. 基本数据类型 Python有多种基本数据类型,包括整数(integer)...

    02-python-判断语句-循环-列表推导式-函数

    在这个"02-python-判断语句-循环-列表推导式-函数"的学习笔记中,我们将深入探讨Python中的四个核心概念:判断语句、循环、列表推导式以及函数。 **1. 判断语句** 在Python中,我们使用`if`、`elif`(else if)和`...

    《Python Standard Library》学习笔记(原书为 Python2.X 版,在学习的过程中,用 Py.zip

    以下是基于《Python Standard Library》学习笔记的一些关键知识点的详细解析: 1. **内置模块**:Python内建了多个模块,如`sys`用于获取系统相关信息,`os`提供了与操作系统交互的接口,`io`处理输入输出流,以及`...

    python学习笔记.pdf

    在这份《python学习笔记.pdf》中,记录了Python编程的基础知识和一些技巧,内容涵盖了字符串处理、变量操作、数据结构、循环、条件判断等方面。以下是对学习笔记中提到知识点的详细说明。 ### 字符串处理 在Python...

    python学习笔记.docx

    【Python学习笔记】 Python是一种高级、通用的编程语言,以其简洁明了的语法和强大的功能而受到广大程序员的青睐。Python被广泛应用于Web开发、数据分析、人工智能、自动化脚本等多个领域。以下是一些关于Python的...

    python学习笔记.zip

    这份"python学习笔记.zip"包含的"python-master.zip"子文件,很可能是一个Python学习资源的压缩包,可能包括教程、代码示例、项目实践等内容,旨在帮助初学者或者有经验的开发者深化对Python的理解。 Python语言的...

    Python-基础学习笔记.docx

    Python自1990年由Guido创建,发展至今分为Python 2.x和Python 3.x两个主要版本。尽管Python 2.x已不再更新,但Python 3.x已成为主流,具有简洁的语法、跨平台的特性,广泛应用在科学计算、Web开发、数据分析等领域。...

    王纯业版《Python学习笔记》.pdf

    从给定的文件信息来看,这是一份关于Python编程语言的学习笔记,由王纯业编著,主要覆盖了Python的基础语法、数据类型、控制结构、函数、模块与包、类和对象、异常处理以及正则表达式等内容。下面将根据笔记的目录...

    python基础教程-学习笔记充电时刻-模块共13页.p

    4. **控制结构(Control Structures)**:包括条件语句(如if-else)用于决定代码的执行路径,循环(如for和while)用于重复执行某段代码,以及异常处理(try-except)来处理程序运行时可能出现的问题。 5. **函数...

    马哥python课堂笔记-马哥教育PYTHON相关基础笔记.pdf

    在马哥教育的PYTHON相关基础笔记中,我们看到几个关键知识点: 1. **推荐书籍**:学习Python时,有几本经典教材值得参考,包括《Python Cookbook》、《Learn Python the Hard Way》、《Google's Python Class》以及...

    Python 基础学习笔记.pdf

    Python 基础学习笔记 本笔记是基于《Python 语言程序设计基础(第 2 版)》第一部分初识 Python 语言的笔记,涵盖了计算机的概念、程序设计语言、Python 语言概述、Python 语言开发环境配置、程序的基本编写方法等...

    python基础教程-学习笔记.zip

    这份“Python基础教程——学习笔记”涵盖了Python编程的基础知识,旨在帮助初学者快速入门。 1. **变量与数据类型** Python中的变量无需预先声明,可以直接赋值。支持的数据类型包括整型(int)、浮点型(float)...

    Python_学习笔记.docx

    2. **三元操作符**:Python中的三元操作符是`条件表达式`,如`small = x if x ,它根据条件`x 的结果来决定赋值`x`或`y`给`small`。 3. **循环结构**: - `while`循环:当给定的条件为真时,重复执行循环体内的...

    Python 基础学习笔记;.doc

    【Python基础学习笔记】 Python是一种流行的高级编程语言,以其简洁的语法、强大的功能和广泛的社区支持而备受青睐。本文档将深入介绍Python的基础知识,帮助初学者掌握编程的基本概念。 1. 计算机和程序设计 ...

    Python学习笔记.doc

    ### Python学习笔记知识点详解 #### 一、Python 数据类型 Python 支持多种内置的数据类型,包括但不限于: 1. **整数(Integer)**: 用于表示整数值,例如 `2`。 2. **浮点数(Floating Point Number)**: 用于...

    Python书籍.zip

    1. **Python基础**:这包括变量、数据类型(如整型、浮点型、字符串、布尔型)、操作符(算术、比较、逻辑)、流程控制(条件语句、循环结构如for和while)以及函数的定义与调用。 2. **字符串处理**:Python对字符...

Global site tag (gtag.js) - Google Analytics