购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 列表的基本操作

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

3.1.1 列表对象的特性

列表由一系列按特定顺序排列的元素组成。在Python中,用方括号“[]”来表示列表,用逗号来分割其中的元素。例如:

aa=["泠泠七弦上,","静听松风寒。","古调虽自爱,","今人多不弹。"]
print(aa)

保存并运行程序,结果如下所示。

['泠泠七弦上,', '静听松风寒。', '古调虽自爱,', '今人多不弹。']

从结果可以看出,Python不仅输出列表的内容,还包括方括号。

列表的常见特性如下:

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

aa=[12,"何当共剪西窗烛",1.66,5+3j]

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

aa=[12,"何当共剪西窗烛",1.66,["一夕轻雷落万丝","霁光浮瓦碧参差",3.66]]

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

aa=[12,"何当共剪西窗烛",1.66,["一夕轻雷落万丝","霁光浮瓦碧参差",3.66]]
print(aa[3])

输出结果如下所示。

['一夕轻雷落万丝', '霁光浮瓦碧参差', 3.66]

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

aa=[12,"何当共剪西窗烛",1.66,["一夕轻雷落万丝","霁光浮瓦碧参差",3.66]]
print(aa[3][1])

输出结果如下所示。

霁光浮瓦碧参差
提示

in运算符用于判断一个元素是否存在于列表中,例如:

a=1 in [1, 2, 3]
print(a)

输出结果如下所示。

True

3.1.2 列表的常见操作

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

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

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

aa=[12,"何当共剪西窗烛",1.66,["一夕轻雷落万丝","霁光浮瓦碧参差",3.66]]
bb=aa.index("何当共剪西窗烛")
cc=aa.index(1.66)
print(bb)
print(cc)

输出结果如下所示。

1
2

2.改变列表对象的元素值

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

aa=[12,"何当共剪西窗烛",1.66,["一夕轻雷落万丝","霁光浮瓦碧参差",3.66]]
aa[1]="却话巴山夜雨时"
print(aa)

输出结果如下所示。

[12, '却话巴山夜雨时', 1.66, ['一夕轻雷落万丝', '霁光浮瓦碧参差', 3.66]]

3.在列表中插入新元素

例如,在列表的第4个位置插入两个新元素:

aa=[12,"何当共剪西窗烛",1.66]
aa[3:]=["却话巴山夜雨时",1.12]   #3:表示从左侧数第4个位置开始添加新元素
print(aa)

输出结果如下所示。

[12, '何当共剪西窗烛', 1.66, '却话巴山夜雨时', 1.12]

4.删除列表中的元素

使用del语句可以删除列表对象中的元素。

例如,删除列表中的第3个元素:

aa=[12,"何当共剪西窗烛",1.66]
del aa[2]
print(aa)

输出结果如下所示。

[12, '何当共剪西窗烛']

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

aa= [100, ['A', 'B', 'C']]
del aa[-1]  #-1表示从右侧数第一个元素
print(aa)

输出结果如下所示。

[100]
提示

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

del a[:]

3.1.3 列表的操作符+和*

列表的常用操作符包括+和*。其中,列表对+和*的操作与字符串相似。+号用于组合列表,*号用于重复列表。

+号操作符经常用于字符串和列表元素的组合。例如:

aa=[1,2,3]+ [4,5,6] + [7,8,9]
print(aa)

输出结果如下所示。

[1, 2, 3, 4, 5, 6, 7, 8, 9]

下面的例子访问列表的元素。

aa=["苹果","葡萄","柚子","桃子","橙子"]
bb="我最喜欢的水果是"+aa[1]
print(bb)

输出结果如下所示。

我最喜欢的水果是苹果

*号运算符经常用于重复列表中的元素。例如,将列表中的元素重复3次:

aa=[100,200,300,400]*3
print(aa)

输出结果如下所示。

[100, 200, 300, 400, 100, 200, 300, 400, 100, 200, 300, 400]

如何才能创建一个占有10个元素空间而又不包括任何内容的列表呢?

空列表可以简单地通过中括号来表示([]),如果想创建占有10个元素空间而又不包括内容的列表,可以使用*号来实现,如[]*10,这样就生成了一个包含10个空元素的列表。然而,有时候可能需要一个值来代表空值,表示没有放置任何元素,可以使用None。None是Python的内建值。例如:

aa=[None]*10
print(aa)

输出结果如下所示。

[None, None, None, None, None, None, None, None, None, None]

3.1.4 内置的函数和方法

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

1.列表的函数

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

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

aa=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
bb=len(aa)
print(bb)

输出结果如下所示。

10

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

aa=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
ma=max(aa)
bb=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'o', 'p']
mb=max(bb)
print(ma)
print(mb)

输出结果如下所示。

10
b
提示

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

aa=[100, 200, 300, 400, 'qq']
ma=max(aa)
print(ma)

输出错误信息如下所示。

Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/untitled/3.2.py", line 2, in <module>
    ma=max(aa)
TypeError: '>' not supported between instances of 'str' and 'int'

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

aa=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(min(aa))
bb=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'o', 'p']
print(min(bb))

输出结果如下所示。

1
a

2.列表的方法

在Python解释器内输入dir([]),就可以显示这些内置的列表方法。

print(dir([]))

输出结果如下所示。

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__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。例如:

aa=[100,200,300,400]
aa.append(500)
print(aa)
aa.append([600,700])
print(aa)

输出结果如下所示。

[100, 200, 300, 400, 500]
[100, 200, 300, 400, 500, [600, 700]]

(2)clear()

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

aa=[100,200,300,400,500,600]
aa.clear()                       #清空列表
print(aa)

输出结果如下所示。

[]

(3)copy()

copy()函数用于复制列表。例如:

aa=['苹果', '香蕉', '柚子', 1.88, 2.66, 3.86]
bb=aa.copy()
print(bb)

输出结果如下所示。

['苹果', '香蕉', '柚子', 1.88, 2.66, 3.86]

(4)count(value)

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

aa=[100,133,166,188,166,266]
bb=aa.count(166)
print(bb)

输出结果如下所示。

2

(5)extend(list)

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

aa=[100, 200, 300, 400]
aa.extend([500,600,700,800])
print(aa)

输出结果如下所示。

[100, 200, 300, 400, 500, 600, 700, 800]

(6)index(value)

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

aa=[100, 200, 300, 400, 500, 600, 700, 800]
ia=aa.index(800)
print(ia)

输出结果如下所示。

7

(7)insert(index, object)

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

aa=[100, 200, 300, 400, 500, 600, 700, 800]
aa.insert(1,"新元素")
print(aa)

输出结果如下所示。

[100, '新元素', 200, 300, 400, 500, 600, 700, 800]

(8)pop([index])

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

aa=[100, 200, 300, [400, 500, 600]]
aa.pop(1)
print(aa)
aa.pop()
print(aa)

输出结果如下所示。

[100, 300, [400, 500, 600]]
[100, 300]

(9)remove(value)

remove(value)方法将列表对象中元素值为value的删除。例如,删除值为300的元素:

aa= [100, 200, 300, 400]
aa.remove(300)
print(aa)

输出结果如下所示。

[100, 200, 400]

(10)reverse()

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

aa=[100, 200, 300, 400]
aa.reverse()
print(aa)

输出结果如下所示。

[400, 300, 200, 100]

(11)sort()

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

aa=[100, 600, 800,400,500,200,300,700]
aa.sort()
print(aa)

输出结果如下所示。

[100, 200, 300, 400, 500, 600, 700, 800]

3.1.5 递推式构造列表

从Python 2.0开始,可以使用递推式构造列表(list comprehension)的功能。所谓递推式构造列表,是使用列表内的元素创建新的列表。

递推式构造列表的语法如下所示:

[ expression for expression1 in sequence1
    [for expression2 in sequence2]
        [... for expressionN in sequenceN]
            [if condition] ]

sequence代表序数对象,如字符串、元组、列表等。在列表包容的结果中,新列表的元素数目是所有序数对象的元素数目相乘的结果。

下面的示例将字符串对象aa与列表对象laa做列表包容,创建一个新的列表对象。

aa="ab"
laa=[100,200,300,400]
bb=[ (x,y) for x in aa for y in laa]
print(bb)

输出结果如下所示。

[('a', 100), ('a', 200), ('a', 300), ('a', 400), ('b', 100), ('b', 200), ('b', 300), ('b', 400)]

aa字符串对象有两个元素,laa列表对象有4个元素,列表包容产生的新列表有8个元素。

毕达哥拉斯三元数组是数形结合的一个典型例子。毕达哥拉斯学派研究出了一个公式:若m是奇数,则m、(m^2-1)/2及(m^2+1)/2便是三元数组,分别表示一个直角三角形的两条直角边和斜边。

下面的递推式构造列表创建了毕达哥拉斯三元组:

aa=[(x,y,z) for x in range(1,30) for y in range(x,30) for z in range(y,30) if x**2 + y**2 == z**2]
print(aa)

输出结果如下所示。 TYVgwLPiAcBcsn/mYYiAsuS0BgT4Or1dph51C19ofyELg47JyjByZXrKXaIDUwVh

[(3, 4, 5), (5, 12, 13), (6, 8, 10), (7, 24, 25), (8, 15, 17), (9, 12, 15), (10, 24, 26), (12, 16, 20), (15, 20, 25), (20, 21, 29)]
点击中间区域
呼出菜单
上一章
目录
下一章
×