Python的List容器一
5. Python的List容器
5.1 什么是容器、什么是list
- 容器
程序中,容器是一种可以把多个元素放在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in等关键字判断某个元素是否包含在容器中。
在Python中,包括列表(list)、元组(tuple)、字典(dict)、集合(set)等,他们都可以放入多个元素,因此都可以算作是容器
- list
列表(list)是一种有序的容器,放入list中的元素,将会按照一定顺序排列。构造list的方法非常简单,使用中括号[]把需要放在容器里面的元素括起来,就定义了一个列表
比如列出所有同学们的成绩:
scores = [45, 60, 75, 86, 49, 100]
列出所有同学们的名字:
names = ['Alice', 'Bob', 'David', 'Ellena'] # 注意,字符串元素仍需要引号
正如我们看到的,list可以放入数字、字符串等数据类型,list不对放入其中的类型进行判断,也就是说,list可以同时放入任意类型的数据,这是Python这门语言决定的,因为Python是动态语言。
L = ['Alice', 66, 'Bob', True, 'False', 100]
对于list,我们可以直接把list的内容打印出来。
print(L)
示例
Alice同学某次考试语文(Chinese)、数学(Math)、英语(English)三科的成绩分别是92、75、99,请使用list保存这些数据. 注意: 科目和成绩属于不同的数据类型
L = ['Alice', 'Chinese', 92, 'Math', 75, 'English', 99]
print(L)
5.2 Python按顺序访问list
列表是有序的,因此我们可以按顺序访问列表中的元素
L = ['Alice', 66, 'Bob', True, 'False', 100]
for item in L:
print(item)
事实上字符串也可以看作是一种特殊的列表,它只能按顺序存放多个字符。通过for循环访问列表每一个元素的方式,我们称为迭代。
而对于一个空的列表,使用for循环访问,将不会打印任何东西。
L = []
for item in L:
print(item)
示例
请使用迭代的方式按顺序输出列表 L = [‘Alice’, 66, ‘Bob’, True, ‘False’, 100] 的偶数位置的元素
# Enter a code
num = 0
L = ['Alice', 66, 'Bob', True, 'False', 100]
for item in L:
num = num + 1
if num % 2 != 0:
continue
print(item)
5.3 Python按索引访问list
由于列表list是一个有序的容器,所以在list里面,每一个元素都有一个唯一的位置,我们称之为索引(index),这和字符串是类似的,因此我们也可以通过位置的方式获取list中的元素,回顾一下前面学习的,我们通过中括号[]来按位置访问对应的元素。
注意,这里要注意区分,列表的定义也是通过中括号[]来定义的,但这和通过索引访问列表里面的元素并不冲突
names = ['Alice', 'Bob', 'David', 'Ellena']
print(names[0])
print(names[1])
print(names[2])
print(names[3])
由于names只有四个元素,所以我们最多只能通过索引3访问到最后一个元素。试想一下,如果我们print(names[4]),会怎么样?
names = ['Alice', 'Bob', 'David', 'Ellena']
print(names[4])
事实上,这会引起Python运行的错误,提示索引访问超出范围
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
因此,我们在使用索引的方式访问列表时,一定要特别注意不要越界
同时,列表和字符串一样,也支持切片,通过切片的方式,获取到列表的子列表
names = ['Alice', 'Bob', 'David', 'Ellena']
sub_names = names[0:2]
print(sub_names)
这里需要注意一下,如果我们越界切片的话,不会出现Python运行错误,但是按照这样的下标去切片,获取不到任何元素
names = ['Alice', 'Bob', 'David', 'Ellena']
sub_names = names[5:10]
print(sub_names) # ==> []
示例
五名同学的成绩可以用一个list表示:L = [95.5, 85, 59, 66, 72],请按照索引的方式分别打印出第一名、第二名、第三名
# Enter a code
L = [95.5, 85, 59, 66, 72]
print(L[0],L[1],L[4])
5.4 Python倒序访问list
Python的列表,除了支持正向顺序索引获取列表中的每一个元素以外,也支持倒序访问list中的每一个元素。
names = ['Alice', 'Bob', 'David', 'Ellena']
对于names列表,Ellena的名字排在最后,也就是我们所说的倒数第一个,在Python中,可以使用-1来表示最后一个元素。
names = ['Alice', 'Bob', 'David', 'Ellena']
print(names[-1]) # ==> Ellena
同样的道理,我们可以通过-2,打印出David的名字,通过-3,打印出Bob的位置。
print(names[-2]) # ==> David
print(names[-3]) # ==> Bob
注意,如果我们使用-5的话,因为不存在倒数第五个名字,因此这也是一种越界,同样会报错。
names = ['Alice', 'Bob', 'David', 'Ellena']
print(names[-5])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
示例
三名同学的成绩可以用一个list表示:L = [95.5, 85, 59, 66, 72],请按照倒序索引的方式分别打印出第一名、第二名、第三名
# Enter a code
L = [95.5, 85, 59, 66, 72]
print(L[-5])
print(L[-4])
print(L[-1])