5分钟带你了解Python中的容器型数据类型--列表2

5分钟带你了解Python中的容器型数据类型–列表2

这里,我们主要介绍的是列表的遍历列表的索引和切片列表的经典例题,想要了解更基础的知识,请前往《5分钟带你了解Python中的容器型数据类型–列表1》,废话不多说,直接进入正题

1.列表的索引和切片

这部分内容很简单,不管你是不是搞计算机的,但是既然你点到了这里,相信,你或多或少听说过索引这个词儿,如果还真没听说过,那你听过检索这个吧,现实生活中,检索的目的是查找并取出满足要求的东西,那么,其实索引和检索的过程是很像的,也就是去查找并将需要的东西取出来,而这里在列表中检索便叫做索引(我是这样理解的),那么既然索引就是这样简单的操作,想想是不是就觉得它会简单了。

  • 列表的索引

对一个列表做索引操作,语法是

列表名[元素下标]

例如:

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓']
print(fruits[1])        # 取出列表中的'西瓜'

执行结果如下

西瓜

《5分钟带你了解Python中的容器型数据类型–列表1》也讲过,列表中的元素是有下标的,如下这样
在这里插入图片描述

那么,同理,我们想取fruits中的其他元素,更改一下下标就可以,这里不再举例

值得注意的是,不但可以对列表进行正向索引,还可以对它进行逆向索引,也就是说,列表中的元素不但在正向上有下标(从前到后的顺序,从0开始编号),在逆方向上仍然是有下标的,用刚刚的fruits列表举例,它的下标是这样的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NMAGyx9f-1627315365972)(C:\Users\86158\AppData\Roaming\Typora\typora-user-images\image-20210726223942680.png)]

于是,如果我们这样取

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓']
print(fruits[-5])        # 取出列表中的'西瓜'

同样可以得到列表里面的’西瓜’

索引只是在列表中找出相应的元素,而不会对列表本身作任何修改,但是在对索引的元素值进行修改时,列表中的对应元素值也被修改

如:

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓']
print(fruits[-5])        # 取出列表中的'西瓜'
print(fruits)

输出:

['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓']      # 原并没有改变列表

而如果

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓','杨梅']   # 定义一个列表\
fruits[0] = '西瓜'     # 将第一个元素改成'西瓜'
print(fruits)

输出:

['西瓜', '西瓜', '梨子', '火龙果', '苹果', '蓝莓', '杨梅']    # 第一个元素已经更改成“西瓜"

掌握了列表的索引,那下面我们再看看什么是列表的切片呢?

  • 列表的切片

从字面上来看,对一个东西切片,那就是将这个物品切成一片儿一片儿的,那么,其实列表的切片和这个意思也是很像的。在一个列表中,根据列表的下标将元素“切”下来列表的一部分生成另一个列表,那么,这个过程就叫做对列表的切片。这里的“切”只是一个形象的说法,而它不像是真的在列表上切,而只是像索引那样,查找到相应的元素,不同的是,切片出来的元素会是一个新的列表,而列表本身不会被修改,而索引出来的元素是一个某种数据类型的单个数据

对一个列表做切片操作,语法是

列表名[开始下标:结束下标:步长]           # 步长在之前讲for循环时range()函数的使用已经讲过
                                     # 取不到结束下标对应的元素,只能取到它的上一个

例如:

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓']   # 定义一个列表
fruits1 = fruits[1:4:1]   # 切片得到的列表复制给一个新列表fruits1,
                            #步长为1,可以省略即fruits1 = fruits[1:4]
print(f"fruits1 = {fruits1}")  
print(f"fruits = {fruits}") 

输出结果

fruits1 = ['西瓜', '梨子', '火龙果']
fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓']

可以知道原本的列表是没有被修改的

如果我们想从第一个元素到最后一个元素进行切片,并且想“跳着”取,就是想取到一个、隔一个再取一个,那么可以这样做:

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓','杨梅']   # 定义一个列表
fruits1 = fruits[::2]             # 从第一个开始可以省略,到最后一个结束也可以省略
print(fruits1)      

输出结果

['香蕉', '梨子', '苹果', '杨梅']

由于是从第一个开始到最后一个(在整个列表中查找,所以可以取到最后一个元素)

在上面,我们知道列表有正向索引,还有逆向索引,那么,切片是不是也有逆向切片呢?没错,是的,同样我们可以采用逆向索引,例如

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓','杨梅']   # 定义一个列表
fruits1 = fruits[-1::-1]             # 从最后一个开始反向查找全部,步长为-1
print(fruits1)

输出结果

['杨梅', '蓝莓', '苹果', '火龙果', '梨子', '西瓜', '香蕉']      # 得到一个反向的列表

其他相关操作自己赶紧试试,比如看看下列操作能得到是什么样的结果

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓','杨梅']   # 定义一个列表
fruits1 = fruits[-2:-6:-2]            
print(fruits1)
#或者
print(fruits[-1::-3] )

不但可以正向下标和反向下标切片,还可以用正向和反向下标混合进行切片(但只能向一个方向进行切片),如:

fruits = ['香蕉', '西瓜', '梨子', '火龙果', '苹果', '蓝莓','杨梅']   # 定义一个列表         
print(fruits[-5:5])

输出结果

['梨子', '火龙果', '苹果']

赶紧自己试试其它的

2.列表的遍历

对于一个列表,如果我们想看一下它里面的所有元素有哪些,那么这个将所有元素输出来的过程就叫列表的遍历。常用用for循环的遍历方法共三种:

例1

nums = [1, 4, 3, 6, 5, 2, 7]
for i in range(len(nums)):  # 可读可写操作
    print(nums[i], end=' ')

输出结果

1 4 3 6 5 2 7 

例2

for num in nums: # 只读操作,不能加序号,实在要加,加上enumerate(枚举)函数,如例3
    print(num, end=' ')

输出结果

1 4 3 6 5 2 7 

例3

for num in enumerate(nums): # 加上enumerate(枚举)函数可得到索引和值
   print(num)

输出结果

(0, 1) (1, 4) (2, 3) (3, 6) (4, 5) (5, 2) (6, 7)

如果对你有帮助,不要帮助点赞、评论、关注加收藏哦!


例3

```python
for num in enumerate(nums): # 加上enumerate(枚举)函数可得到索引和值
   print(num)

输出结果

(0, 1) (1, 4) (2, 3) (3, 6) (4, 5) (5, 2) (6, 7)

如果对你有帮助,不要帮助点赞、评论、关注加收藏哦!

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Python和数据分析

钟意作者

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

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

打赏作者

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

抵扣说明:

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

余额充值