使用“=”直接将一个列表赋值给变量即可创建列表对象,例如:
1 >>> a_list = [‘a‘,‘b‘,‘mpilgrim‘,‘z‘,‘example‘] 2 >>> a_list = [] #创建空列表
也可以使用list()函数将元组、range对象、字符串、字典集合或其他类型的可迭代对象类型的数据转换为列表。需要注意的是,把字典转换为列表时默认是将字典的“键”转换为列表,而不是把字典元素转换为列表,如果想把字典的元素转换为列表,需要使用字典对象的item()方法明确说明。例如:
1 >>> a_list = list((3,5,7,9)) #将元组转换为列表 2 >>> a_list 3 [3, 5, 7, 9] 4 >>> 5 >>> list(range(1,20,2)) #将range对象转换为列表 6 [1, 3, 5, 7, 9, 11, 13, 15, 17, 19] 7 >>> 8 >>> list(‘hello world‘) #将字符串转换为列表 9 [‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘, ‘ ‘, ‘w‘, ‘o‘, ‘r‘, ‘l‘, ‘d‘] 10 >>> 11 >>> list({3,7,5}) #将集合转换为列表 12 [3, 5, 7] 13 >>> 14 >>> list({‘a‘:3,‘b‘:9,‘c‘:78}) #将字典的“键”转换为列表 15 [‘c‘, ‘a‘, ‘b‘] 16 >>> 17 >>> list({‘a‘:3,‘b‘:9,‘c‘:78}.values()) #将字典的“值”转换为列表 18 [78, 3, 9] 19 >>> 20 >>> list({‘a‘:3,‘b‘:9,‘c‘:78}.items()) #将字典的“键:值”对转换为列表 21 [(‘c‘, 78), (‘a‘, 3), (‘b‘, 9)] 22 >>> 23 >>> x = list() #创建空列表 24 >>>
在Python社区中,习惯把list()还有后面很快就会学到的tuple()、set()、dict()这样的函数称为“工厂函数”,因为这些函数可以生成新的数据类型。
创建列表之后,可以使用整数作为下标来访问其中的元素,其中0表示第一个元素,1表示第2个元素,2表示第3个元素,以此类推;列表还支持使用负整数作为下标,其中-1表示左后1个元素,-2表示倒数第2个元素,以此类推,如下所示:
1 >>> x = list(range(10)) #创建列表 2 >>> import random 3 >>> random.shuffle(x) #把列表中的元素顺序打乱 4 >>> x 5 [7, 8, 3, 2, 9, 4, 6, 0, 1, 5] 6 >>> 7 >>> x[0] #访问第1个元素 8 7 9 >>> x[1] #访问第2个元素 10 8 11 >>> 12 >>> x[-1] #访问最后一个元素 13 5 14 >>>
正向索引 0 1 2 3 4 5 6 7 8 9
[7, 8, 3, 2, 9, 4, 6, 0, 1, 5]
反向索引 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1
当一个列表不再使用时,可以使用del命令将其删除,这一点适用于所有类型的Python对象。另外,也可以使用del命令删除列表、字典等可变序列中的部分元素,而不能删除元组、字符串等不可变序列中的部分元素。例如:
1 >>> x = [1,2,3] 2 >>> 3 >>> del x[1] #删除列表中指定位置的元素,即索引为1的第2个元素 4 >>> x 5 [1, 3] 6 >>> 7 >>> del x #删除列表对象 8 >>> x 9 Traceback (most recent call last): 10 File "<pyshell#19>", line 1, in <module> 11 x 12 NameError: name ‘x‘ is not defined 13 >>> 14 >>> 15 >>> x = {‘a‘:3,‘b‘:6,‘c‘:9} 16 >>> 17 >>> del x[‘a‘] #删除字典中部分元素 18 >>> x 19 {‘b‘: 6, ‘c‘: 9} 20 >>> 21 >>> 22 >>> x = (1,2,3) #创建元组对象 23 >>> del x[0] #不允许删除元组中的元素 24 Traceback (most recent call last): 25 File "<pyshell#29>", line 1, in <module> 26 del x[0] #不允许删除元组中的元素 27 TypeError: ‘tuple‘ object doesn‘t support item deletion 28 >>> 29 >>> 30 >>> x[0] = 4 #也不能修改元组中的值,要不怎么叫不可变序列呢 31 Traceback (most recent call last): 32 File "<pyshell#33>", line 1, in <module> 33 x[0] = 4 34 TypeError: ‘tuple‘ object does not support item assignment 35 >>>
拓展知识:
垃圾回收机制。一般来说,使用del删除对象之后Python会在恰当的时候调用垃圾回收机制来释放内存,我们也可以在必要的时候导入Python标准库gc之后调用gc.collect()函数立刻启动垃圾回收机制来释放内存。