目录
列表是什么?
列表的定义
列表是元素以特定顺序排列而组成的。从定义中,我们可以得知,列表中可以放任何类型的元素,比如列表自身(称之为嵌套)。此外,列表的中的元素是有顺序的。列表的有序性方便我们从中提取某些特定的元素。
列表的写法
在Python中,列表是用方括号括起来的([ ]),列表中的元素由逗号, 隔开。
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles) # 打印三次
输出:
['trek', 'cannondale', 'redline', 'specialized']
['trek', 'cannondale', 'redline', 'specialized']
['trek', 'cannondale', 'redline', 'specialized']
由于列表中的元素是有顺序的,Python保存在列表的顺序,因此,在三次打印中,输出的结果完全相同(包括顺序)。在后面,我们会讲到,多次打印集合和词典的,输出结果的顺序可能会不同。
访问列表元素
由于列表是有顺序的,因此,Python可以根据列表中元素的位置,访问到该元素的具体内容,这一过程称之为索引(indexing)。访问的方法是在列表名后加上[ 位置](0,1,2,3 等)。比如,我们要访问上述列表的第一个元素:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])
输出:
trek
细心的读者可能已经发现,列表索引是从0开始而不是从1开始。
索引从0而不是从1 开始
那么,我们现在可以推测,当我们执行 print(bicycles[1]) 会得到第二个元素cannondale。由于列表索引的这一特点,我们可能会得到自己不想得到的值。比如,我们想得到第一个元素,感觉应该执行 print(bicycles[1]),这时,得到的结果不是我们预期的。此外,我们可能会遇到索引超出列表元素个数的错误。比如:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[4])
输出:
IndexError: list index out of range # 索引错误,列表索引超出范围
有时候,我们可能不知道列表有多少个元素或者元素个数过多,书写不太方便,此外,书写可能由于索引从而非从1开始而犯错,Python给我们提供了一种更方面提取列表最后一个元素的方法,即从反向提取列表元素。具体操作如下:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[-1])
print(bicycles[-2])
print(bicycles[-3])
输出:
specialized
redline
cannondale
从上述代码,可以看到,提取最后一个元素的方法是将索引写为[-1]。由此可以推知,倒数第二个元素的索引为[-2]; 倒数第三个元素的索引为[-3]
提取并使用列表中的某个值
通过索引的方式,得到列表的输出类型是字符串。自然而然,我们就会想到,那么我们是否可以对列表索引的结果进行类似字符串的操作?当然是肯定的。比如:
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
message = f"My first bicycle was a {bicycles[0].title()}."
print(message)
输出:
My first bicycle was a Trek.
修改、增加、删除列表中的元素
修改列表元素
修改列表元素的思路就是首先访问到该元素,再对该元素赋予新值。比如:
motorcycles = ['honda', 'yamaha', 'suzuki']
print('原始列表为:')
print(motorcycles)
print()
print('修改后的列表为:')
motorcycles[0] = 'ducati'
print(motorcycles)
输出:
原始列表为:
['honda', 'yamaha', 'suzuki']
修改后的列表为:
['ducati', 'yamaha', 'suzuki']
增加列表元素
在列表的末尾增加元素
在英文中,append的含义是在文章的后面添加。写过期末论文的同学,对appendix(附录)这一单词应该也不会感到陌生。在达芬奇调色中,将所选素材添加到时间线最后的方法是append at end。如下图所示:
在Python中,在列表的末尾增加元素也使用append()方法。具体操作如下:
list_1 = ['first element','second element','third element']
print(list_1)
print()
list_1.append('last element')
print(list_1)
输出:
['first element', 'second element', 'third element']
['first element', 'second element', 'third element', 'last element']
从上述代码可知,我们通过append()的方法在list_1列表的最后一个位置添加了‘last element'这一元素。在后续,我们会学到如何首先建立一个空列表,然后
配合使用pop()和append()的方法,生成一个新的列表。
在任意位置增加元素
在任意认为增加元素需要使用insert()方法。由于append()方法增加元素的位置已经确定,因此,我们只需要给它传递一个值就可以。insert()方法,可以在任意位置增加元素,因此,我们首先需要一个参数告诉Python,我们想将该元素增加到哪个位置,然后,在告诉Python增加的元素值是什么(第二个参数)。具体操作如下:
list_1 = ['first element','second element','third element']
print(list_1)
print()
list_1.insert(0,'truely first element')
print(list_1)
输出:
['first element', 'second element', 'third element']
['truely first element', 'first element', 'second element', 'third element']
删除列表元素
通过del 删除列表元素
list_1 = ['first element','second element','third element']
print(list_1)
print()
del list_1[0]
print(list_1)
输出:
['first element', 'second element', 'third element']
['second element', 'third element']
使用del 方法,我们无法对删除的元素进行访问
通过pop()的方法删除元素
pop()方法和append()相对应。append()方法可以在列表的最后位置增加元素,而pop()方法可以删除列表最后一个元素。具体操作如下:
list_1 = ['first element','second element','third element']
print(list_1)
print()
poped_list_1= list_1.pop()
print(list_1)
print()
print(poped_list_1)
输出:
['first element', 'second element', 'third element']
['first element', 'second element']
third element
从上面代码中,我们可以看到,我们依然可以通过访问到被删除的元素。我们可以给del 赋予一个变量,看看打印结果:
list_1 = ['first element','second element','third element']
print(list_1)
print()
del_list_1 = del list_1[0] # 没有这种写法
print(list_1)
print(del_list_1 )
输出:
SyntaxError: invalid syntax
上面的代码,再次证明我们真的无法访问del 删除的元素。
其实,我们也可以给pop()方法传递一个位置参数。具体操作如下:
list_1 = ['first element','second element','third element']
print(list_1)
print()
poped_list_1= list_1.pop(0)
print(list_1)
print()
print(poped_list_1)
输出:
['first element', 'second element', 'third element']
['second element', 'third element']
first element
当我们给pop()方法传递一个位置参数时,pop()方法就不会采用其默认值(末尾)。
通过remove()方法删除列表元素
与del 和pop()方法不同, remove()方法不是基于索引删除元素,而是基于元素的值进行删除。具体操作如下:
list_2 = ['first element','second element','second element','third element']
print(list_2)
print()
list_2.remove('second element')
print(list_2)
输出:
['first element', 'second element', 'second element', 'third element']
['first element', 'second element', 'third element']
细心的读者可能已经发现,列表中有两个相同的元素,为什么基于元素值的remove()方法只删除了一个值?这是因为remove()方法在找到第一个值后,就停止往后找了。我们有两种方法可以解决这一问题。第一种方法将列表转化为集合。集合具有互斥性,因此,集合中的各个元素值都是不相等的。第二种方法就是使用for 循环,我们会在第七章讲到。在这里,我只演示第一种方法。
list_2 = ['first element','second element','second element','third element']
print(list_2)
print()
set_2 = set(list_2)
set_2.remove('second element')
print(set_2)
输出:
['first element', 'second element', 'second element', 'third element']
{'third element', 'first element'}
下期再见!!!
我会根据自己的学习进度以及学业安排,不时更新内容。如果大家感觉有用,可以点赞或者留言告诉我。
备注:
最近在实习,且快到开题报告的时间了,因此,更新的速度可能会比以往慢一点。烦请读者体谅。祝大家国庆节快乐。