列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。列表是新手可直接使用的最强大的 Python 功能之一,它融合了众多重要的编程概念。在本文中,你将学习列表是什么以及如何使用列表元素。
列表由一系列按特定顺序排列的元素组成。
通常具备以下几个特点:
在 Python 中,用方括号([ ]
)来表示列表,并用逗号来分隔其中的元素。
为了你更好的理解,举个栗子:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names)
运行这段代码,结果如图1-1:
上面这段代码中 names
就是一个列表,用方括号来表示列表,并用逗号来分隔元素,然后用print
方法将列表打印出来。
鉴于这不是我们想让用户看到的输出效果,下面来学习如何访问列表元素。
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉 Python 即可。
比如,把一些朋友的姓名存储在一个列表中,并将其命名为names
,现在你想从列表中依次输出你的朋友:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
# 第一位朋友
print(names[0])
# 第二位朋友
print(names[1])
# 第三位朋友
print(names[2])
运行上述代码,结果如图1-2:
names[元素的索引]
就是访问列表元素的语法。从运行结果中可以知道,当你请求获取列表元素时,Python只返回该元素,而不包括方括号和引号。
注意事项:
可像使用其他变量一样使用列表中的各个值。
例如,把一些朋友的姓名存储在一个列表中,并将其命名为names
,依次问候一下列表中的每个朋友:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names[0] + ", good morning!")
print(names[1] + ", good afternoon!")
print(names[2] + ", good evening!")
运行这段代码,结果如图1-3:
你创建的大多数列表都将是动态的,这意味着列表创建后,将随着程序的运行增删元素。
修改列表元素的语法与访问列表元素的语法类似。要修改列表元素,可指定列表名和要修改的元素索引,再指定该元素的新值。
例如,把一些朋友的姓名存储在一个列表中,并将其命名为names
,现在第二个朋友因为某些原因改名了,所以你得在列表上做相应的修改:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names)
# 第二个朋友名字换成 Shelly
names[1] = 'Shelly'
print(names)
运行这段代码,结果如图2-1:
可以看到,你的第二个朋友 Vicky 已经改名为 Shelly
你可能会出于各种原因要在列表中添加新元素。
Python 提供了多种在既有列表中添加新数据的方式。
可以使用方法 append()
将新元素添加到既有列表末尾:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names)
# 添加新元素到末尾
names.append("Sheldon")
print(names)
结果如图2-2:
方法 append()
让动态创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的 append()
方法添加元素。下面来创建一个空列表,再在其中添加你的朋友名字:
names = []
names.append("Kelvin")
names.append('Vicky')
names.append('Ada Lovelace')
print(names)
运行这段代码,结果如图2-3:
这种创建列表的方式极其常见,因为经常要等程序运行后,你才知道用户要在程序中存储哪些数据。
使用方法 insert()
可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。
例如,把一些朋友的姓名存储在一个列表中,并将其命名为names
,现在你想把你的新朋友 Sheldon
放在列表的开头:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names)
names.insert(0, 'Sheldon')
print(names)
在上面↑的示例中,值 Sheldon
被插入到了列表开头;方法 insert()
在索引0处添加空间,并将值 Sheldon
存储到这个地方,然后将列表中既有的每个元素都右移一个位置。
运行这段代码,结果如图2-4:
你经常需要从列表中删除一个或多个元素。
Python 也提供了多种删除列表中元素的方式。
如果知道要删除的元素在列表中的位置,可使用 del
语句:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names)
del names[2]
print(names)
第4行代码使用del
删除了列表names
中的最后一个元素 Ada Lovelace,运行上面代码,结果如图2-5:
方法 pop()
可删除列表末尾的元素,并让你能够接着使用它。此时,列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。
下面从好友列表中弹出(删除)一位好友:
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names)
# 不加参数默认删除最后一个元素
popped_name = names.pop()
print(names)
print(popped_name)
代码第二行我们首先打印了好友列表,接下来,从这个列表中弹出了一个值(末尾元素),并将其存储在变量 popped_name 中,然后我们打印好友列表,确定元素是否已经删除,最后我们打印弹出的值,证明我们依然能够访问被删除的值。
运行上面代码,结果如图2-6:
事实上,我们可以利用 pop()
来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。
names = ['Kelvin', 'Vicky', 'Ada Lovelace']
print(names)
# 删除指定索引位置的元素
popped_name = names.pop(0)
print(names)
print(popped_name)
和上一段代码不同之处在于 pop()
函数传入了参数0
,这个参数代表要被删除的元素索引,所以程序删除了列表索引为0的元素值,popped_name
的值这次是 Kelvin。
运行这段代码,结果如图2-7:
如果你不确定该使用 del
语句还是 pop()
方法,下面是一个简单的判断标准:如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del
语句;如果你要在删除元素后还能继续使用它,就使用方法 pop()
。
有时候你不知道自己想删除的值在列表中索引怎么办?不要方,Python 肥肠人性化的提供了根据值删除元素的方法 remove()
。
例如,你想在好友列表中删除 Vicky
,你可以这样做:
names = ['Kelvin', 'Vicky', 'Ada Lovelace', 'Vicky']
print(names)
# 删除 Vicky
names.remove('Vicky')
print(names)
运行这段代码,结果如图2-8:
可以看到,remove()
方法确实将Vicky从列表中删除了,但其只删除第一个指定的值。
如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。关于循环我们将在接下来的文章中详细讲解。
到这里本文就暂时告一段落了,直到最近我开始试着把自己学过的一点点浅薄的东西尽力写成比较系统的文章时才知道写文章到底有多累。一方面和本人性格有关,希望尽量写得完美一些,另一方面水平有限,把脑海里的知识转化成新手能懂的语言,要考虑到各个方面做到通俗易懂,确实非常困难,我希望自己能坚持下来,时间能证明坚持的力量,在写文章的同时,也能让自己有所提高。
如果你在学习过程中有任何疑问,可以关注文章↓↓↓的公众号及时与我联系,我们相互讨论,共同学习。
最后,祝你学有所成。