Python入门很轻松(微课超值版)
上QQ阅读APP看书,第一时间看更新

4.3 列表类型

列表(List)是Python中使用比较频繁的数据类型。列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,支持数字、字符串,甚至可以包含列表(所谓嵌套)。

4.3.1 认识列表类型

微视频

列表是写在中括号([])之间、用逗号分隔开的元素表。要创建一个列表对象,使用中括号([])来包含其元素。例如:

    >>>s = [1,2,3,4,5]

列表对象s共有5个元素,可以使用s[0]来返回第1个元素、s[1]来返回第2个元素,以此类推。如果索引值超出范围,Python就会抛出一个IndexError异常。

大牛提醒

在不知道列表长度的情况下,可以采用负数作为索引来访问。通过将索引指定为-1,可以让Python返回一个列表中最后的元素。例如:

    >>>s = [1,2,3,4,5]
    >>>s[-1]
    5

列表对象属于序数对象,是一群有序对象的集合,并且可以使用数字来作索引。列表对象可以进行新增、修改和删除的操作。

列表的常见特性如下:

(1)列表对象中的元素可以是不同的类型,例如:

    >>>a=[100,"  野径云俱黑",8.99,4+2j]

(2)列表对象中的元素可以是另一个列表,例如:

    >>>b = [100,"  野径云俱黑",8.99,[ 100,"  野径云俱黑",8.99,3.66]]

(3)访问列表中对象的方法比较简单,列表中的序号是从0开始的。例如,访问下面列表中的第3个元素。

    >>>c =[100,"野径云俱黑",8.99,[ 100,"野径云俱黑",8.99,3.66]]
    >>>c[3]
    [100, '野径云俱黑', 8.99, 3.66]

(4)列表是可以嵌套的,如果要读取列表对象中嵌套的另一个列表,可使用另一个中括号([])来作索引。例如:

    >>>c =[100,"  野径云俱黑",8.99,[ 100,"野径云俱黑",8.99]]
    >>>c[3][1]
    '野径云俱黑'

4.3.2 列表的常见操作

列表创建完成后,还可以对其进行相关的操作。

1.获取某个元素的返回值

使用列表对象的index(c)方法(c是元素的内容)来返回该元素的索引值。例如:

    >>>x =[100,"野径云俱黑",8.99,[ 100,"野径云俱黑",8.99]]
    >>>x.index("野径云俱黑")
    1
    >>> x.index(8.99)
    2
2.改变列表对象的元素值

列表中的元素值是可以改变的。例如,修改列表中的第2个元素。

    >>>x =[100,"野径云俱黑",8.99,4+2j]
    >>>x[1] = "江船火独明"
    >>>x
    [100, '江船火独明', 8.99, (4+2j)]
3.删除列表中的元素

使用del语句可以删除列表对象中的元素。例如,删除列表中的第3个元素。

    >>>x =[100,"野径云俱黑",8.99,4+2j]
    >>>del x[2]
    >>>x
    [100, '野径云俱黑', (4+2j)]

如果想从列表中删除最后一个元素,可以使用序号-1。例如:

    >>>x =[100,"野径云俱黑",8.99,4+2j]
    >>>del x[-1]  #-1表示从右侧数第一个元素
    >>>x
    [100, '野径云俱黑', 8.99]

大牛提醒

如果想一次清除所有的元素,可以使用del语句操作,命令如下:

    del a[:]

4.3.3 列表的内置函数和方法

列表对象有许多的内置函数和方法。下面介绍这些函数和方法的使用技巧。

1.列表的函数

列表内置的函数包括len()、max()、min()和list()。

(1)len()函数返回列表的长度。例如:

    >>>x=[100, 200, 300, 400, 500, 600, 700, 800]
    >>>len(x)
    8

(2)max()函数返回列表元素中的最大值。例如,求取列表中的最大值:

    >>>a=[100, 200, 300, 400, 500, 600, 700, 800]
    >>>max(a)
    800
    >>>b=['a', 'b', 'c', 'd', 'e', 'f', 'g']
    >>>max(b)
    'g'

列表中的元素数据类型必须一致才能使用max()函数,否则会出错。例如:

    >>>a=[100, 200, 300, 400, '字符串变量']
    >>>max(a)
    Traceback (most recent call last):
      File "<pyshell#4>", line 1, in <module>
        max(a)
    TypeError: '>' not supported between instances of 'str' and 'int'

(3)min()函数返回列表元素中的最小值。例如:

    >>>a=[100, 200, 300, 400, 500, 600, 700, 800]
    >>>min(a)
    100
    >>>b=['a', 'b', 'c', 'd', 'e', 'f', 'g']
    >>>min(b)
    'a'
2.列表的方法

在Python解释器内输入dir([]),可以查看内置的列表方法。

    >>>dir([])

下面将挑选常用的方法进行介绍。

(1)append(object)

append()方法在列表对象的结尾,加上新对象object。例如:

    >>>x=[100,200,300,400]
    >>>x.append(500)
    >>>x
    [100, 200, 300, 400, 500]
    >>>x.append([600,700])
    >>>x
    [100, 200, 300, 400, 500, [600, 700]]

(2)clear()

clear()方法用于清空列表,类似于del a[:]。例如:

    >>>s =[100,200,300,400]
    >>>s.clear()   #清空列表
    >>>s
    []

(3)copy()

copy()方法用于复制列表。例如:

    >>>a = [100,"野径云俱黑",8.99]
    >>>b = a.copy()
    >>>b
    [100, '野径云俱黑', 8.99]

(4)count(value)

count(value)方法针对列表对象中的相同元素值value计算其数目。例如,计算出列表值为100的元素个数。

    >>>a= [100,100,200,100,300,400]
    >>>a.count(100)
    3

(5)extend(list)

extend(list)方法将参数list列表对象中的元素加到此列表中,成为此列表的新元素。例如:

    >>>a=[1,2, 3, 4]
    >>>a.extend([5,6,7,8])
    >>>a
    [1, 2, 3, 4, 5, 6, 7, 8]

(6)index(value)

index(value)方法将列表对象中元素值为value的索引值返回。例如:

    >>>a= [1, 2, 3, 4, 5, 6, 7, 8]
    >>>a.index(  6)
    5

(7)insert(index, object)

insert(index, object)方法将在列表对象中索引值为index的元素之前插入新元素object。例如:

    >>>x=[1, 2, 3, 4, 5, 6]
    >>>x.insert(1,"新元素")
    >>> x
    [1, '新元素', 2, 3, 4, 5, 6]

(8)pop([index])

pop([index])方法将列表对象中索引值为index的元素删除。如果没有指定index的值,就将最后一个元素删除。例如,删除第2个元素和删除最后一个元素。

    >>>x = [1,2,3,[4,5,6]]
    >>>x.pop( 1)   #删除第2个元素
    >>>x
    [1, 3, [4, 5, 6]]
    >>>x.pop()        #删除第2个元素
    [4, 5, 6]
    >>>x
    [1,3]

大牛提醒

如果列表为空或者索引值超出范围会报一个异常。

(9)remove(value)

remove(value)方法将列表对象中元素值为value的删除。例如,删除值为“英语”的元素。

    >>>x = ["数学","语文","英语"]
    >>>x.remove("英语")
    >>>x
    ["数学","语文"]

(10)reverse()

reverse()方法将列表对象中的元素颠倒排列。例如:

    >>>x = ["数学","语文","英语"]
    >>>x.reverse()
    >>>x
    ['英语', '语文', '数学']

(11)sort()

sort()方法将列表对象中的元素依照大小顺序排列。例如:

    >>>x = [1,9,8,4,5,3,2,6]
    >>>x.sort()
    >>>x
    [1, 2, 3, 4, 5, 6, 8, 9]

【例4.2】创建一个二维列表,输出不同版式的古诗(源代码\ch04\4.2.py)。

这里首先定义4个字符串,再定义一个二维列表,然后使用for循环将古诗输出,接着使用reverse()函数将列表进行逆序排列,最后使用for循环将古诗以竖版形式输出。

    gs1="牧童骑黄牛"
    gs2="歌声振林樾"
    gs3="意欲捕鸣蝉"
    gs4="忽然闭口立"
    vs=[list(gs1), list(gs2), list(gs3), list(gs4)]           #创建一个二维列表
    print ("下面输出横版古诗 \n")
    for n in range(   4):                                   #循环输出古诗的每一行
        for m in range(   5):                               #循环每一行的每一个字
            if m==4:                                          #如果是一行中的最后一个字
                print (vs[n][m])                              #换行输出
            else:
                print (vs[n][m],end="")                       #不换行输出
    
    vs.reverse()                                              #对列表进行逆序排列
    print ("下面输出竖版古诗 \n")
    for n in range(   5):                                   #循环每一行的每个字
        for m in range(   4):                               #循环新逆序排列后的第一行
            if m==3:                                          #如果最后一行
                print (vs[m][n])                              #换行输出
            else:
                print (vs[m][n],end="")                       #不换行输出

程序运行结果如图4-2所示。

图4-2 例4.2的程序运行结果