从零开始学Python系列课程第17课:容器型数据类型之列表(上)

发布时间:2023年12月29日

前言

列表算是 Python 中比较常用的一种容器型数据类型,那么什么是列表,列表有什么样的作用致使它在 Python 中这么受欢迎呢?这便是接下来我们要一起讨论的问题。
在不久之前我们讲过变量,我们将数据使用变量保存,但是如果涉及到多组数据仍然源源不断的创建变量进行保存,我们的代码就显得过于臃肿。那么有没有可能一个变量能够保存多个数据呢,答案是肯定的,我们可以先将数据依次放入容器中(这样一个保存有多组数据的容器可以被理解为是一个数据集合体的),再用变量保存这个容器,等需要用到数据时,从容器中提取出即可。

一、列表创建

列表,是一个把中括号[]作为标志、使用逗号分隔元素的容器型数据类型,容器意味着其有存储数据的功能,并且列表中可以存储任意类型的可重复元素。例如这样一个列表:

list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]

如果想要创建一个列表,我们可以使用两种方法:第一种方法我们其实已经进行了编写,就是上述所举例的列表,可以直接遵循规则使用 [] 进行列表创建;另一种方法就是使用 Python 内置的 list 方法创建空列表或直接将其他容器变为列表,这其实是一种构造器语法。关于构造器语法,我们后续进行介绍。

list_2 = list()
# []

list_3 = list('abcde')
# ['a', 'b', 'c', 'd', 'e']

二、列表中数据的提取

我们将数据存放到了列表中,那么应该如何再把数据取出来呢,可以使用索引、切片还有循环遍历。

1. 索引(下标)

列表,是一个有序的容器型数据类型,其中的每个元素都有自己指定的位置。
正向下标.png
负向下标.png
如图所示,索引(也可以叫做下标)分为正向索引反向索引。如果是正向索引,从左向右索引从0开始递增;如果是反向索引,从右向左索引从-1开始递减。我们可以通过索引得到有序容器中指定位置的元素,但是要注意,千万不要写超出范围的索引。
语法:有序容器[索引]

list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]

# 问题一:获取列表中的第一个True
print(list_1[3], list_1[-4])

# 问题二:写一个超出范围的索引
print(list_1[100])
# 报错:IndexError: list index out of range

2. 切片

切片可以理解为是索引的拓展功能。切片能够从有序容器1中截取出一部分元素组成与有序容器1同类型的有序容器2
切片.png
语法:有序容器[start: end: step]

  • 切片为左闭右开区间 [start, end)
  • start 为开始截取的元素的索引,如果没写,默认从开头第一个元素开始截取。
  • end 为停止截取元素的索引,end 在开区间的位置,所以取不到,如果没写,默认截取到最后一个元素。
  • step 为步长,如果不写默认为1,通过 step 可以计算出下一个元素,下一个被截取元素的索引 = 当前被截取元素的索引 + step
  • step 必须为整数,如果 step ≥ 1,start 代表的元素必须在 end 代表的元素左边;如果 step ≤ -1,start 代表的元素必须在 end 代表的元素的右边。
  • 在切片中,正向索引和负向索引可以一起使用。
games = ['王者荣耀', '和平精英', '奇迹暖暖', '英雄联盟', '光遇', '炉石传说']
# 1. 得到['王者荣耀', '和平精英']
print(games[0: 2])
print(games[: 2: 1])

# 2. 得到['王者荣耀', '奇迹暖暖', '光遇']
print(games[: 5: 2])
print(games[: -1: 2])
print(games[:: 2])

# 3. 得到['炉石传说', '光遇', '英雄联盟', '奇迹暖暖', '和平精英', '王者荣耀']
print(games[::-1])

# 4. 得到['英雄联盟', '和平精英']
print(games[-3: -6: -2])
print(games[3: 0: -2 ])

3. 循环遍历

列表是容器型数据类型,我们在讲述循环结构时讲过,for-in 循环可以从容器中获取数据,所以通过循环遍历可以提取到列表中的每个元素,对列表的循环遍历可以分为两种,一种是直接遍历,另一种是间接遍历。

  • 直接遍历:直接拿到每一个元素。
list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]
for i in list_1:
    print(i)

# 1
# 2
# 3
# True
# False
# True
# [2, 4, 6]
  • 间接遍历:列表中每个元素都有自己的索引,我们可以通过 len() 获取到列表的长度,从而将列表中每个元素的索引构造出来,间接性的拿到元素。
list_1 = [1, 2, 3, True, False, True, [2, 4, 6]]
for i in range(0, len(list_1)):
    print(f'{i}-->{list_1[i]}')

# 0-->1
# 1-->2
# 2-->3
# 3-->True
# 4-->False
# 5-->True
# 6-->[2, 4, 6]

大家先把以上内容进行梳理,此部分内容在后续学习中会经常用到,希望大家能时常温故知新,我们先学理论,再进行实操训练。

文章来源:https://blog.csdn.net/weixin_42788769/article/details/135295681
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。