容器是一种把多个元素组织在一路的数据构造,容器中的元素可以逐个地迭代获取,可以用in, not in关键字断定元素是否包含在容器中。平日这类数据构造把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内存,比如迭代器和生成器对象)在Python中,常见的容器对象有:
- list, deque, ….
- set, frozensets, ….
- dict, defaultdict, OrderedDict, Counter, ….
- tuple, namedtuple, …
- str
这里x是一个可迭代对象,可迭代对象和容器一样是一种通俗的叫法,并不是指氖刂具体的数据类型,list是可迭代对象,dict是可迭代对象,set也是可迭代对象。y和z是两个自力的迭代器,迭代器内部持有一个状况,该状况用于记录当前迭代地点的地位,以便利下次迭代的时刻获取精确的元素。迭代器有一种具体的迭代器类型,比如list_iterator,set_iterator。可迭代对象实现了__iter__办法,该办法返回一个迭代器对象。
- x = [1, 2, 3]
- for elem in x:
- ...
实际履行情况是:

参考链接:https://docs.python.org/2/library/stdtypes.html#iterator-types
反编译该段代码,你可以看到说冥器显示地调用GET_ITER指令,相当于调用iter(x),FOR_ITER指令就是调用next()办法,赓续地获取迭代器中的下一?元素,然则你没法直接大年夜指令中看出来,因为他被说冥器优化过了。
- >>> import dis
- >>> x = [1, 2, 3]
- >>> dis.dis('for _ in x: pass')
- 1 0 SETUP_LOOP 14 (to 17)
- 3 LOAD_NAME 0 (x)
- 6 GET_ITER
- >> 7 FOR_ITER 6 (to 16)
- 10 STORE_NAME 1 (_)
- 13 JUMP_ABSOLUTE 7
- >> 16 POP_BLOCK
- >> 17 LOAD_CONST 0 (None)
推荐阅读
留意事项2)语法缩进,应用四个空格;多加注释解释。3)定名建议规矩:变量名大年夜写、局部变量小写,函数名小写,名字表现出实际感化。4)默认变量是全局的,在函数中变量local指定为局部变>>>详细阅读
地址:http://www.17bianji.com/lsqh/35917.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示