列表是Python以及其他语言中最常用到的数据结构之一。Python中使用中括号[]来表示列表,具体示例如下:
student = [20190101, "隼与鱼", 18, 98]
列表的创建
列表是一组任意类型的值组合而成,组成列表的值称为元素,每个元素之间用逗号隔开,具体示例如下:
list1 = [1, 2, 3, 4, 5] # 元素为int型
list2 = ['简书', '作者', '隼与鱼'] # 元素为String型
list3 = ['隼与鱼', 18, 98] # 元素为混合类型
list4 = ['简书', ['隼与鱼', 18, 98]] # 列表嵌套列表
上述示例创建了4个列表,其中list4中嵌套一个列表,正是由于列表中元素可以是任意类型数据,才使得数据表示更加简单。
此外,还可以创建一个空列表,具体示例如下:
list5 = []
创建一个空列表有什么作用呢,很多情况下,编程者无法提前预知列表中包含多少个元素及每个元素的值,只知道将会用一个列表来保存这些元素。当有了空列表后,程序就可以向这个列表中添加元素。此处需注意,列表中的元素是可变的,这意味着可以向列表中添加、修改和删除元素。
列表中的元素还可以是变量,但是修改变量的值,并不会影响列表中元素的值,如下所示。
1 name, age, score = '隼', 18, 95.5
2 list1 = [name, age, score]
3 print(list1)
4 name, age, score = '鱼', 20, 100
5 print(list1)
6 print(name, age, score)
运行结果如下图所示。

在上例中,第2行根据前面定义的变量创建一个列表,第4行修改变量的值。从程序运行结果可发现,变量修改前后,列表中元素的值没有发生变化。
此外,创建列表还可以通过list()函数,如下所示。
1 list1 = list("sunyuyu")
2 list2 = list(range(1,5))
3 list3 = list(range(5))
4 list4 = list(range(1, 5, 2))
5 print(list1)
6 print(list2)
7 print(list3)
8 print(list4)
运行结果如下图所示。

在上例中,第1行将字符串中每个字符作为列表中的每个元素。第2行到第4行通过range()函数生成的一系列整数作为列表的元素,range()函数的用法如下表所示。
函数 | 说明 |
---|---|
range(start,end) | 返回一系列整数从start开始,到end-1结束,相邻两个整数差1 |
range(end) | 返回列一系列整数从0开始,到end-1结束,相邻两个整数差1 |
range(start,end,step) | 返回一系列整数从start开始,相邻两个整数差step,结束整数不超过end-1 |
列表的索引与分片
列表的索引与字符串的索引类似,都分为正向与反向索引,如下图所示。

在上图中,列表中每一个元素都对应两个下标,例如索引列表中元素5,可以通过以下两种方式:
list1[4]
list1[-4]
列表的分片与字符串的分片也类似,列表的分片可以从列表中取得多个元素并组成一个新列表,接下来演示列表的分片,如下所示。
1 list1 = [1, 2, 3, 4, 5, 6, 7, 8]
2 print(list1[2:6])
3 print(list1[2:6:2])
4 print(list1[:6])
5 print(list1[2:])
6 print(list1[-6:-2])
7 print(list1[-6:-2:2])
8 print(list1[::-2])
运行结果如下图所示。

在上例中,注意对原列表进行分片操作后返回一个新列表,原列表并没有发生任何变化。
网友评论