3.1 列表的基本操作
列表(list)对象属于序数对象,它是一群有序对象的集合,并且可以使用数字来做索引。列表对象可以做新增、修改和删除的操作。
3.1.1 列表对象的特性
列表由一系列按特定顺序排列的元素组成。在Python中,用方括号[]来表示列表,用逗号来分割其中的元素。
例如:
>>>s=["溪云初起日沉阁,", "山雨欲来风满楼。"] >>>print(s) [’溪云初起日沉阁,', ’山雨欲来风满楼。']
从结果可以看出,Python不仅输出列表的内容,还包括方括号。
列表的常见特性如下。
(1)列表对象中的元素,可以是不同的类型。
例如:
>>>s=[1, "Hello",2.1,2+3j]
(2)列表对象中的元素,可以是另一个列表。
例如:
>>>s = [1, "Hello",2.1, ["A", "B", "C"]]
(3)列表对象中使用与字符串对象相同的运算符。
例如:
>>>s = [1, "Hello",2.1, ["A", "B", "C"]] >>>s[3] ['A', 'B', 'C']
(4)要读取列表对象中的另一个列表,使用另一个中括号[]来做索引。
例如:
>>> s = [1, "Hello",2.1, ["A", "B", "C"]] >>>s[3][1] 'B'
(5)可以使用列表对象的index(c)方法(c是元素的内容)来返回该元素的索引值。
例如:
>>>s = [1, "Hello",2.1, ["A", "B", "C"]] >>> s.index("Hello") 1 >>> s.index(1) 0
(6)可以修改列表对象的元素。
例如:
>>> s = [1, "Hello",2.1, ["A", "B", "C"]] >>> s[1] = "Welcome" >>> s [1, 'Welcome', 2.1, ['A', 'B', 'C']]
(7)可以在列表对象中插入新元素。
例如:
>>> s = [1, "Hello",2.1, ["A", "B", "C"]] >>> s[4:] = [123, "ok"] #4:表示从左侧数第5个位置开始添加新元素 >>> s [1, 'Hello', 2.1, ['A', 'B', 'C'], 123, 'ok']
(8)也可以使用列表对象的insert()方法来插入新元素。
例如:
>>> s = [1, "Hello",2.1, ["A", "B", "C"]] >>> s.insert(1, "A") >>> s [1, 'A', 'Hello', 2.1, ['A', 'B', 'C']]
(9)可以使用del语句来删除列表对象中的元素。
例如:
>>> s = [1, "Hello",2.1, ["A", "B", "C"]] >>> del s[1] >>> s [1,2.1, ['A', 'B', 'C']] >>> del s[-1] #-1表示从右侧数第一个元素 >>> s [1,2.1]
(10)读者可以像使用其他变量一样使用列表中的各个值。
例如:
>>>s=["蓝色", "绿色", "红色", "黄色", "紫色"] >>>ss="我最喜欢的颜色是"+s[0].title() >>> print(ss) 我最喜欢的颜色是蓝色
3.1.2 列表包容
从Python 2.0开始,可以使用列表包容(list comprehension)的功能。所谓列表包容,是使用列表内的元素来创建新的列表。其语法如下:
[ expression for expression1 in sequence1 [for expression2 in sequence2] [...for expressionN in sequenceN] [if condition] ]
sequence代表序数对象,如字符串、元组、列表等。列表包容后,新列表的元素数目是所有序数对象的元素数目相乘的结果。
下列案例将letters字符串对象与lst列表对象做列表包容,从而创建一个新的列表对象。
>>> letters = "py" >>> lst = [1,2,3,4] >>> [ (x, y) for x in letters for y in lst] [('p', 1), ('p', 2), ('p', 3), ('p', 4), ('y', 1), ('y', 2), ('y', 3), ('y',4)]
在本案例中,letters字符串对象有2个元素,lst列表对象有4个元素,列表包容产生的新列表有8个元素。
3.1.3 列表的操作符
列表的常用操作符包括+和*。其中列表对+和*的应用与字符串相似,+号用于组合列表,*号用于重复列表。
+号运算的示例如下:
>>>[1,2,3]+ [4,5,6] [1, 2, 3, 4, 5, 6]
*号运算的示例如下:
>>>[1,2,3]* 3 [1, 2, 3, 1, 2, 3, 1, 2, 3]
3.1.4 列表的函数和方法
列表对象有许多内置函数和方法,下面学习这些函数和方法的使用技巧。
1.列表的函数
列表内置的函数包括len()、max()、min()和list()。
(1)len()函数返回列表的长度。例如:
>>>list1 =[1, 2, 3] >>>print (len(list1)) 3
(2)max()函数返回列表元素中的最大值。例如:
>>> list1=[1, 2, 3, 4] >>> print (max(list1)) 4 >>> list2=['a', 'c', 'd', 'p'] >>> print (max(list2)) p
注意
只有当列表中的元素数据类型一致时,才能使用max()函数,否则会出错。
例如:
>>> list1=[1, 2, 3, 4, 'a'] >>> print (max(list1)) Traceback (most recent call last): File "<pyshell#48>", line 1, in <module> print (max(list1)) TypeError: unorderable types: str() > int()
(3)min()函数返回列表元素中的最小值。例如:
>>> list1=[1, 2, 3, 4] >>> print (min(list1)) 1 >>> list2=['a', 'c', 'd', 'p'] >>> print (min(list2)) a
(4)list()函数用于将元组转换为列表。元组与列表非常类似,区别在于元组的元素值不能修改。元组是放在括号中,列表是放于方括号中。例如:
>>>books = (59, ’清华大学出版社’, 'Python', ’教材’) >>>list1 = list(books) >>>print ("图书信息为: ", list1) 图书信息为: [59, ’清华大学出版社’, 'Python', ’教材’]
2.列表的方法
在Python解释器内输入dir([]),就可以显示这些内置方法。
>>> dir([]) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
下面将挑选最常用的方法进行介绍。
1)append(object)
append()方法在列表对象的结尾,加上新对象object。例如:
>>>lst = [1,2,3] >>>lst.append(5) >>> lst [1, 2, 3, 5] >>> lst.append([4,5,6]) >>> lst [1, 2, 3, 5, [4, 5, 6]]
2)clear()
该函数用于清空列表,类似于del a[:]。例如:
>>>lst =[1,2,2,3,2,4] >>>lst.clear() #清空列表 >>>lst []
3)copy()
该函数用于复制列表。例如:
>>>list1 = [’张小平’, ’王磊’, ’胡华’] >>>list2 = list1.copy() >>>print (list2) [’张小平’, ’王磊’, ’胡华’]
4)count(value)
count()方法针对列表对象中的元素值为value者,计算其数目。例如:
>>> lst = [1, 2, 2, 3, 2, 4] >>> lst.count(2) 3
5)extend(list)
extend()方法将参数list列表对象中的元素加到此列表中,成为此列表的新元素。例如:
>>>lst = [1, 2, 3, 4] >>> lst.extend([5,6,7,8]) >>> lst [1, 2, 3, 4, 5, 6, 7, 8]
6)index(value)
index()方法将列表对象中元素值为value者,返回其索引值。例如:
>>> lst = [1, 2, 3, 4] >>> lst.index(2) 1
7)insert(index, object)
insert()方法将在列表对象中索引值为index的元素之前插入新元素object。例如:
>>> lst = [1, 2, 3, 4] >>> lst.insert(1, "Hello") >>> lst [1, 'Hello', 2, 3, 4]
8)pop([index])
pop()方法将列表对象中索引值为index的元素删除。如果没有指定index的值,就将最后一个元素删除。例如:
>>> lst = [1, 2, 3, 5, [4, 5, 6]] >>> lst.pop() [4, 5, 6] >>> lst [1, 2, 3, 5] >>> lst.pop(1) 2 >>> lst [1, 3, 5]
9)remove(value)
remove()方法将列表对象中的元素值为value者删除。例如:
>>> lst = [1, 2, 3, 4] >>> lst.remove(2) >>> lst [1, 3, 4]
10)reverse()
reverse()方法将列表对象中的元素颠倒排列。例如:
>>> lst = [1, 2, 3, 4] >>> lst.reverse() >>> lst [4, 3, 2, 1]
11)sort()
sort()方法将列表对象中的元素,依照大小顺序排列。例如:
>>> lst = [1, 4, 3, 2] >>> lst.sort() >>> lst [1, 2, 3, 4]