列表
列表是包含0个或多个对象引用的有序序列
列表是可变的,可以对列表中的项进行删除或替换,插入、替换或删除列表中的分片也是可能的
函数
list() #可以将元组转换为列表,不带参数时将返回一个空列表
del x #对象引用被删除后,如果该对象引用所引用的数据项没有被其他对象引用进行引用,那么该数据项将进入垃圾收集流程。不能确定垃圾收集是否自动进行,第一种使用try...finally语句块确保垃圾收集得以进行;另一种是使用with语句
>>>woods = ["Cedar", "Yew", "Pine", "Fir", "Spruce"];
>>>woods[2:4] = [] == del woods[2:4];
range(x) #将返回一个指代子,x是一个整数,如x为整数参数n,则指代子range()会生成并返回0, 1, ..., n -1
>>>for i in range(len(numbers)):
numbers[i] += 1; #对一列整数中的每一个进行递增操作
空列表可以使用list()函数创建,也可以使用空的方括号来创建
与元组一样,列表可以存放任意数据类型的数据项,包括组合数据类型,比如列表与元组
列表可以使用标准的比较操作符(<、<=、==、!=、>=、>)
列表可以进行分片操作来存取列表中的数据项
>>>L = [-17.5, "kilo", 49, "V", ["ram", 5, "echo"], 7];
>>>L[1][0] == L[-5][0] == 'k';
>>>L[4][2] == L[4][-1] == L[-2][2] == L[-2][-1] == 'echo';
>>>L[4][2][1] == L[4][2][-3] == L[-2][-1][1] == L[-2][-1][-3] == 'c';
和元组一样,列表也支持嵌套、指代、分片等操作,使用in与not in进行成员关系测试,使用+进行连接,使用+=进行扩展,使用*与*=进行复制操作
列表可以使用内置的len()函数以及del语句
方法
L.append(x) #将数据项x追加到列表L的尾部
L.count(x) #返回数据项x在列表L中出现的次数
L.extend(m) #将iterable m的项追加到L的结尾处,操作符+=完成同样的功能
L.index(x, start, end) #返回数据项x在列表L中(或L的start:end分片中)最左边出现的索引位置,否则会产生一个ValueError异常
L.pop(i) #返回并移除L中索引位置int i处的数据项,空参数时移除list L最右边的数据项
L.remove(x) #从list L中移除最左边出现的数据项x,如果找不到x就产生ValueError异常
L.reverse() #对列表L进行反转
L.sort() #对列表L进行排序,与内置的sorted()函数一样
L.insert(i, x) #在索引位置int i处将数据项x插入列表L
>>>woods = ["Cedar", "Yew", "Fir", "Spruce"];
>>>woods[2:2] == woods.insert(2, "Pine");
['Cedar', 'Yew', 'Pine', 'Fir', 'Spruce']
任意可指代的(列表、元组等)数据类型都可以使用序列拆分操作符进行拆分,即*
>>>first, *rest = [9, 2, -4, 8, 7];
>>>first, rest;
(9, [2, -4 , 8, 7])
>>>first, *mid, last = "Charles Philip Arthur George Windsor".split()
>>>first, mid, last;
('Charles', ['Philip', 'Arthur', 'George'], 'Windsor')
>>>*directories, ezecutable = "/usr/local/bin/gvim".split("/")
>>>directories, executable;
(['', 'usr', 'local', 'bin'], 'gvim')
>>>def product(a, b, c):
return a * b * c;
>>>L = [2, 3, 5];
>>>product(*L)
30
>>>product(2, *L[1:]);
30
列表内涵
附加条件
>>>leaps = [];
>>>for year in range(1900, 1940):
if(year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
leaps.append(year);
>>>leaps = [y for y in range(1900, 1940) if(y % 4 == 0 and y % 100 != 0) or (y % 400 == 0)];
实现嵌套
>>>codes = []
>>>for sex in "MF": #Male,Female
for size in "SMLX": #Small, Medium, Large, eXtra large
if sex == "F" and size == "X":
continue;
for color in "BGW": #Black, Gray, White
codes.append(sex + size + color);
>>>codes = [s + z + c for s in "MF" for z in "SMLX" for c in "BGW" if not (s == "F" and z == "X")];