您的位置:首页 > 编程语言 > Python开发

Python list dict iteration

2016-05-06 15:16 633 查看


Python tricks(3) -- list和dict的遍历和方法

2014-01-23 23:11 by 会被淹死的鱼, 1631 阅读, 0 评论, 收藏, 编辑

每个人在使用python的过程中都会遍历list和dict.
List遍历
最常用最简单的遍历list的方法

但是, 如果我需要拿到list的index, 很多人可能会这样写

其实, python提供了一个方法enumerate, 用法如下

上面两种方式的结果相同

这是一种更加方便便捷的方式, 虽然少写不了几个字符, 从代码可读性等方面来考量的话, 还是清晰很多的.
代码应该让人一目了然, 目的明确, 如果多种方式可以实现相同的功能, 那么我们应该选择一种大家更加容易理解的, enumerate就是这样的方式.

第二个参数在很多时候也是很有用的, 比如我不希望从0开始, 希望从1开始

输出如下

如果你使用range的话, 会蹩脚很多.
Dict遍历
dict最简单的遍历方式

上面遍历k和v的方式并不好, 显得很蹩脚. dict本身提供了iteritems()方法, 可以做到k,v对遍历.

dict还有个viewitems方法, 这个直接看到的是全部k,v对.
iteritems和viewitems的区别是什么? 可以类比range和xrange的区别.
大家肯定都了解range和xrange的区别, 在遍历的时候尽量使用xrange, 特别是当遍历的范围比较大的时候.

range是直接返回一个保存全量数据的list, 空间复杂度是O(n), 而xrange是在遍历中不断生成的, 遍历的效率更高, 而且空间复杂度是O(1) (个人理解, 没看过具体实现).
iteritems和viewitems都可以完成遍历, 二者的不同用下面的代码来说明

输出如下

viewitems直接返回的是[('a', 1), ('c', 3), ('b', 2), ('d', 4)], 熟悉dict构造函数的人应该知道, 这也是一种构造dict的方式.

dict还有其他几个方法

dict的完整示例代码

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: