学习笔记33具有Python特色的循环
Posted SAP剑客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记33具有Python特色的循环相关的知识,希望对你有一定的参考价值。
具有Python特色的循环
首先我们看一下下面这个代码段,作用是循环输出列表内容。
上面的代码 段其实缺乏Python特色,首先代码中手动跟踪了索引(使用了变量“i”,初始为0,每次循环递增1),其次使用len()函数获取容器大小。
我们可以使用内置的range()自动生成索引range类型表示不可变的数列,内存占用比普通列表少,range对象实际上并不存储数列的每个值,而是充当迭代器实时计算数列的值。
所以,上面的代码段可以做如下重构。
在Python中,for循环实绩上是for-each循环,可以直接在容器或者序列中迭代元素,无需通过索引查找,那么,上面的代码段还可以重构。
上面的代码不再跟踪容器的大小,也不使用运行时索引来访问元素。
那么如果需要用到项的索引,该怎么办呢?
其实有一种方式既可以让循环持有当前运行的索引,又能避免之前的range(len())模式,需要使用内置enumerate()迭代器改进,迭代器可以返回含有任意个元素的元组,然后再for语句内解包。
同样可以使用enumerate()迭代字典的键和值。
要是循环必须要有步长呢?
如:for (int i = a; i < n;i += s){
// ...
这里还是可以用到上面讲的range()函数,该函数接受可选参数来控制循环的起始值a,终止值n和步长值s。
以上是关于学习笔记33具有Python特色的循环的主要内容,如果未能解决你的问题,请参考以下文章