1.列表同字符串一样也是一个序列,所有适用于字符串的下标表示方法都同样适用于列表。列表的遍历、"+"和"*"同字符串的遍历、"+"和"*"也是一样的。列表的长度也是len(l)。
注:列表的乘法l = [1,2,3],则l * 3为[1,2,3,1,2,3,1,2,3],而不是[[1,2,3,],[1,2,3,] ,[1,2,3,] ]
2.列表的中的值称为元素或数据项,可以是任意类型(包括列表),且同一列表内的元素类型可以不相同。对于列表的元素是列表或字符串的,可以用多个下标来标明具体的列表元素或某个字符。
例如:
>>>l = [['a', 'b', 'cd'], 'string', 3]
>>>l[0][2][0]
'c'
>>>l[1][2]
'r'
3.列表是可变的,可以直接对列表做修改、增加、删除等操作。
例如:
>>>l = ['a', 'b', 'c', 'd', 'e', 'f']
>>>l[1:6:2]=[1, 2, 3]
>>>l
['a', 1, 'b', 2, 'e', 3]
4.列表的方法:
(1)添加
- l.append(element) #添加一个元素到原列表的末尾
- l.extend(list) #添加一个列表的所有元素到原列表的末尾,等同l+list
- l.insert(i, element) #在原列表i下标的位置添加一个元素
(2)删除
- l.remove(x) #移除列表中最左边出现x的元素,找不到x时产生异常
- l.pop(i) #返回列表下标为i的元素,并把它移除。若i省略,则返回列表最后一个元素,并移除
- del l[start:end:step] #从列表中下标为start到end-1隔step-1个元素进行删除。start、end和step都可以省略
- l.clear() #清除l中所有的元素
(3)查找
- l.index(x, start, end) #在l[start, end]中寻找x,并返回最左边出现x的下标,如果找不到产生异常。start和end可以同时省略,或只省略end
- l.count(x) #返回x在列表中出现的次数
(4)排序
- l.sort(key=expr, reverse =Bool) #当列表各元素是同类型且可以排序时,通过key后的单变量函数提取计算每个元素的比较值,根据reverse的值对l做升序或降序排列,否则产生异常。key常用的单变量函数有str.lower,str.upper,str.swapcase,abs等。key缺省时默认为None,reverse缺省时默认为False。与sorted(l)不同,l.sort()排序是直接改变列表的
- l.reverse() #降序排列
5.sum(list) #当列表的元素都是数字时,会返回list中的所有元素的和,否则产生异常
6.很有意思的情况:
(1)整型
>>>a = 5
>>>b = 5
>>>a is b
False
>>>c = a
>>>c is a
True
>>>c -= 1
>>>c is a
False
>>>a
5
>>>c
4
(2)字符串
>>>s = 'hello'
>>>t = 'hello'
>>>s is t
True
(2)列表
>>>l = [1, 3, 5, 7]
>>>m =[1, 3, 5, 7]
>>>m is l
False
>>>n = l
>>>n is l
True
>>>del n[0]
>>>l
[3, 5, 7]
>>>n = m.copy()
>>>l is n
False #n和l一直是相同的,直到其中一个变量被重新赋值
所以在数字变量作为参数被传入函数时是不会改变原来变量的(除非用返回值重新赋值),而列表变量作为参数被传入函数时,不需要返回值,原来变量也会与函数做出相同的改变。如果不想修改原变量,可以做一个浅拷贝,例如,n = l[:],或n = l.copy()
7.通过l = l + [x]和l.append(x)的方法都可以得到一个末尾增加了x元素的列表。但是l = l + [x]是将列表拼接后对l重新赋值,l.append(x)是直接在原列表后增加一个元素。当需要一直增加,随着列表越来越长时会发现l = l + [x]用时越来越长。例如《像科学家一样思考Python》中第10章的习题,将一个文件里的11万多单词连成一个列表,用两种方法的用时相差1000多倍
8.字符串和列表的相互转换:字符串的s.split()和sorted(s)都会产生列表的拷贝;当l中的各元素都为字符或字符串时," ".join(l)会将l中的各元素拼接成以" "为分隔符的字符串
8.字符串和列表的相互转换:字符串的s.split()和sorted(s)都会产生列表的拷贝;当l中的各元素都为字符或字符串时," ".join(l)会将l中的各元素拼接成以" "为分隔符的字符串