- 语句:
if else elif while for break continue pass - 悬挂else问题:在C中else与最近的if搭配,就会容易产生问题,而python中因为强制缩进, 所以不会有这问题
elif常可以用序列和成员关系符进行简化(更优雅:利用字典)- 使用映射对象的一个最大好处是它的搜索操作比类似if-elif-else语句或for循环这样的序列查询要快得多
- 三元操作符:
val1 if cond else val2 - 通过序列索引迭代(速度没直接迭代快):
for index in range(len(namelist)) - 同时用项和索引迭代:
enumerate() - 迭代器:支持迭代的方法,里面的
next()方法返回下一个条目,当迭代完成会引发一个StopIteration异常并被捕获 (for循环自动调用) range()的完整参数:range(start, end, step),step默认为1- 在for中用
xrange()性能要优于range(),它不会在内存里创建列表的完整拷贝(不生成整个列表),类型为xrange - 易混点:
sorted()、zip()返回的是列表,reversed()、enumerate()返回的是一个迭代器 break结束/打断当前循环(常在for、while)然后跳到下条语句, 若循环中有else也会被跳过continue终止当前循环, 忽略剩余语句, 回到循环顶端(如果满足先决条件)- 迭代器(创建用
iter())为类序列对象提供了一个类序列的接口,还可以迭代不是序列但表现出序列行为的对象(字典的键, 文件的行) - 迭代器好处:
可拓展接口 性能提升 迭代非序列集合时可以创建更简洁的代码
限制:不能向后移动、不能复制(只能创建新的) - 文件对象生成的迭代器会自动调用
readline()方法 - 如果在迭代时改变了元素(因为迭代器是与实际对象绑定在一起的),会报
RuntimeError - 如果传递两个参数给
iter(func, sentinel),它会重复调用第一个参数func,直至迭代器下一个值是第二个参数sentinel - 列表解析可以简化类似
lambda、map的函数(减少了函数调用次数),支持多重for嵌套和多个if子句 - 列表解析实例:矩阵、生成三维坐标(多个
for时:最后的for相当于外循环)、磁盘文件字符计数 - 列表解析的不足:必须生成所有数据,用以创建整个列表;结合生成器可以解决此问题
- 生成器:语法和列表解析基本相同(
[]换为()),但不真正创建数字列表, 而是返回一个生成器(每次计算出一个条目后再yield出来,相当于惰性列表解析)
Python随学随记(4)—— 条件和循环
最新推荐文章于 2024-09-11 15:20:30 发布
本文探讨了Python中的控制流语句,如if-elif-else、while、for等,并对比了与其他语言的区别。深入讨论了如何利用字典、映射对象及三元操作符来简化代码。此外还介绍了迭代器的概念、列表解析与生成器的使用方法及其优缺点。
1530

被折叠的 条评论
为什么被折叠?



