《Python核心编程》(第二版) 第8章 条件和循环

第8章 条件和循环


8.1 if语句

if expression:

    expr_true_suite



8.2 else语句

if expression:

    expr_true_suite

else:

    expr_false_suite


8.3 elif语句

if expression1:

    expr1_true_suite

elif expression2:

    expr2_true_suite

...

elif expressionN:

    exprN_true_suite

else:

    expr_all_of_false_suite



8.4 条件表达式(即“三元操作符”)

(1) X if C else Y

(2)such as follow:

>>> x, y = 4, 3

>>> smaller = x if x < y else y

>>> smaller

3



8.5 while语句

while expression:

    suite_to_repeat



8.6 for语句

8.6.1 一般语法

for iter_var in iterable:

    suite_to_repeat


8.6.2 用于序列类型

迭代序列的3种基本方法:

1.通过序列项迭代

>>>seq = [1,2,3,4]

>>>for i in seq:

...        pass


2.通过序列索引迭代

>>>seq = [1,2,3,4]

>>>for i in range(len(seq)):

...        pass


3.使用项和索引迭代

>>>seq = [1,2,3,4]

>>>for x, y in enumerate(seq):

...        pass


8.6.3 用于迭代器类型


8.6.4 range()内建函数

(1) range(start, end, step = 1)

返回包含所有k的列表,start<= k <end, k之间以step值为等差递增,step默认为1,不可为0。


(2) range(end)

step默认为1,返回从0到end-1的列表


(3) range(start, end)

step默认为1,返回从start至end-1的列表


8.6.5 xrange内建函数

类似range(),在有大范围列表时使用更为合适,因为不会在内存里创建列表的完整拷贝。


8.6.6 与序列相关的内建函数

sorted()

reversed()

enumerate()

zip()



8.7 break 语句

用以中断循环语句,即中止循环语句的执行,即使循环条件没有变更为False,或队列中的项目尚未完全迭代。



8.8 continue语句

跳过当前循环块中的剩余语句,并继续该循环的下一次迭代。



8.9 pass语句

不做任何事情



8.10 再谈else语句

while和for循环中使用else语句,else子句只在循环完成后执行,被break中断的循环也不会执行else语句。

while expression:

    code_suite

else:

    pass



8.11 迭代器和iter()函数


8.11.1 什么是迭代器

(1)迭代器为类序列对象提供了一个系列的接口。

(2)可以迭代不是序列但表现出序列行为的对象,如字典和文件。


8.11.2 为什么要迭代器


8.11.3 如何迭代

(1)迭代器就是有一个next()方法的对象,而不是通过索引来计数。

(2)reversed()内建函数将返回一个反序列访问的迭代器,enumerate()内建函数也返回迭代器。


8.11.4 使用迭代器

1.序列

for i in seq:

    do_something_to(i)


2.字典

字典的迭代器会遍历它的键,语句for eachkey in myDict.keys()可以缩写为for eachkey in myDict。


3.文件

文件对象生成的迭代器会自定调用readline()方法,这样,循环就可以访问文本文件的所有行。可以使用for eachline in myFile 替换 for eachline in myFile.readlines()。


8.11.5 可变对象和迭代器

在对可变对象进行迭代时,不可更改可变对象。


8.11.6 如何创建迭代器

(1)对一个对象调用iter()就可以得到其迭代器。

iter(obj)

iter( func, sentinel ) #如果传递2个参数给iter(),它会重复地调用func,直到迭代器的下个值等于sentinel。

(2)case as follow:

>>> x = [1, 2, 3]

>>> y = iter(x) #根据列表创建迭代器

>>> next(y)

1

>>> next(y)

2



8.12 列表解析

(1)列表解析来自函数式编程Haskell。

[ expr for iter_var in iterable ]


(2)扩展语法

[ expr for iter_var in iterable if cond_expr ]


(3)矩阵样例

迭代3行5列的矩阵

>>> [ (x+1, y+1) for x in range(3) for y in range(5) ]


(4) 磁盘文件样例



8.13 生成器表达式

(1)生成器表达式是列表解析的一个扩展,生成器是特定的函数,允许你返回一个值,然后暂停代码的执行,稍后恢复(第11章细讲生成器)。

(2)生成器表达式与列表解析非常相似,基本语法基本相同,不过并不真正创建数字列表,而是返回一个生成器,这个生成器在每次计算一个条目后,把这个条目产生(yield)出来。

列表解析:

[ expr for iter_var in iterable if cond_expr ]

生成器表达式:

( expr for iter_var in iterable if cond_expr )



8.14 相关模块


8.15 练习

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值