1. list数据类型类似于数组,是可变的,使用“[]”定义,list变量可使用append(),pop(),insert()进行操作
2. tuple元组使用“()”定义,tuple类型与lisr类型主要不同点在于tuple不可变,创建了就不能修改,注意这个不能修改是说指向不能改变,如:t = ('a', 'b', ['A', 'B']) t有三个元素,第0个指向字符'a',第1个指向字符'b',第2个指向一个list,注意:tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!理解了“指向不变”后,要创建一个内容也不变的tuple怎么做?那就必须保证tuple的每一个元素本身也不能变。
3. dict是一组键值对(key:value),key不可变,dict的特点: 1. 访问快,效率高,但是占用的内存大。2. 元素排列是无序的。3. key值不可变。
如
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
4. python函数返回多个值时,返回的其实是一个tuple
5. 函数的可变参数
给函数传入可变参数时,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。定义一个可变参数函数:
def average(*args):
print args
6. 迭代
迭代的永远是取出元素本身,而不是其索引
对于有序集合,如果想迭代出其索引,可以使用enumerate()函数,如:
>>> L = ['Adam', 'Lisa', 'Bart', 'Paul']
>>> for index, name in enumerate(L):
... print index, '-', name
...
0 - Adam
1 - Lisa
2 - Bart
3 - Paul
实际上,enumerate() 函数将L转变成了一个tuple,变成类似的:
[(0, 'Adam'), (1, 'Lisa'), (2, 'Bart'), (3, 'Paul')]
注:如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。
7. 生成列表
如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:
>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。
写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来,十分有用
8. 闭包:一个函数内部还定义了其它函数,内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)
闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变