Python程序设计案例课堂
上QQ阅读APP看书,第一时间看更新

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]