list + *需要留意
如图所示,list
指令的+``*
与我们通常所理解的数组元素操作不一致。容易引起因弄错数据类型而带来的变量值改变问题。
在写程序和调试的时候,需注意list的使用是否正确。import & reload
当写好我们的程序,即*.py
文件,用import
加载到python shell中执行时,会产生*.pyc
文件,以加速下一次import。
当修改*.py
文件后,此时*.pyc
文件并没有进行相应的改动。若使用import
则会产生看起来修改无效的bug。所以记得使用reload
。变量只是指针而已
如图所示,list的赋值,并没有开辟新的内存空间。两个变量拥有一样的内存地址。
这种object在python中叫做mutable object
,包含list、。integer、float、string是immutable object
。tuples是只能赋值不能改变的。dict & OrderedDict
使用dict
时,Key是无序的。在对dict
做迭代时,我们无法确定Key的顺序。
如果要保持Key的顺序,可以用OrderedDict
,它是collections
模块中的一个功能。
>>> from collections import OrderedDict
>>> d = dict([('a', 1), ('b', 2), ('c', 3)])
>>> d # dict的Key是无序的
{'a': 1, 'c': 3, 'b': 2}
>>> od = OrderedDict([('a', 1), ('b', 2), ('c', 3)])
>>> od # OrderedDict的Key是有序的
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
注意,OrderedDict的Key会按照插入的顺序排列,不是Key本身排序:
>>> od = OrderedDict()
>>> od['z'] = 1
>>> od['y'] = 2
>>> od['x'] = 3
>>> od.keys() # 按照插入的Key的顺序返回
['z', 'y', 'x']