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

前言

列表算是 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]

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

  • 11
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HerrFu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值