学习笔记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特色的循环的主要内容,如果未能解决你的问题,请参考以下文章

Python学习笔记--关于python

python 学习笔记(循环,print的几种写法,操作符)

python学习笔记--循环语句

20180422学习python笔记:循环

python学习笔记(15)循环设计

Python学习笔记(Ⅱ)——循环/选择/函数