Python 可变对象和迭代器 注意点
来源:互联网 发布:java保留两位小数 %.2 编辑:程序博客网 时间:2024/06/05 02:50
记住,在迭代可变对象的时候修改它们并不是个好主意. 这在迭代器出现之前就是一个问题.
一个流行的例子就是循环列表的时候删除满足(或不满足)特定条件的项:
除列表外的其他序列都是不可变的, 所以危险就发生在这里. 一个序列的迭代器只是记录你
当前到达第多少个元素, 所以如果你在迭代时改变了元素, 更新会立即反映到你所迭代的条目上.
在迭代字典的 key 时, 你绝对不能改变这个字典. 使用字典的 keys() 方法是可以的, 因为
keys() 返回一个独立于字典的列表. 而迭代器是与实际对象绑定在一起的, 它将不会继续执行下
去:
这样可以避免有缺陷的代码. 更多有关迭代器的细节请参阅 PEP 234 .
一个流行的例子就是循环列表的时候删除满足(或不满足)特定条件的项:
for eachURL in allURLs: if not eachURL.startswith('http://'): allURLs.remove(eachURL) # YIKES!!
除列表外的其他序列都是不可变的, 所以危险就发生在这里. 一个序列的迭代器只是记录你
当前到达第多少个元素, 所以如果你在迭代时改变了元素, 更新会立即反映到你所迭代的条目上.
在迭代字典的 key 时, 你绝对不能改变这个字典. 使用字典的 keys() 方法是可以的, 因为
keys() 返回一个独立于字典的列表. 而迭代器是与实际对象绑定在一起的, 它将不会继续执行下
去:
>>> myDict = {'a': 1, 'b': 2, 'c': 3, 'd': 4}>>> for eachKey in myDict:... print eachKey, myDict[eachKey]... del myDict[eachKey]... a 1Traceback (most recent call last):File "", line 1, in ?RuntimeError: dictionary changed size during iteration
这样可以避免有缺陷的代码. 更多有关迭代器的细节请参阅 PEP 234 .
0 0
- Python 可变对象和迭代器 注意点
- python可变对象和不可变对象
- Python-可变对象和不可变对象
- JAVA可变参数注意点
- python的可变和不可变对象
- python可变参数和可改变对象
- Python基础:Python可变对象和不可变对象
- Python基础:Python可变对象和不可变对象
- C++一些注意点之类和对象
- python数据清洗流程和注意点
- Python中可变对象和不可变对象
- python知识点:可变对象和不可变对象
- Python中的可变对象和不可变对象
- Python中的变量引用对象需注意的几点
- 对象拷贝注意点
- python中数据类型(对象)的可变和不可变性
- python的默认参数和可变对象研究
- Python注意点
- DAO
- smartform连续打印,并自动补充空行
- HDU-2045 :不容易系列之(3)—— LELE的RPG难题
- 【redis】主从复制
- commons-fileupload文件的上传和加密保存,保存其他上传参数
- Python 可变对象和迭代器 注意点
- 商品展示
- ${pageContext.request.contextPath} :JSP取得绝对路径方法
- Apache Spark 内存管理详解
- 【腾讯Bugly干货分享】Android减包 - 减少APK大小
- MIME协议个人笔记--第一篇
- Leetcode 27. Remove Element
- C++概述
- 统计一篇文本中空格、单词、句子、非字母字符个数