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

news/2024/7/19 12:32:21 标签: 列表, python, 索引

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

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

1.列表索引和切片

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

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

python">列表[元素下标]

例如:

python">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)]

于是,如果我们这样取

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

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

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

如:

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

输出:

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

而如果

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

输出:

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

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

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

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

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

例如:

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

输出结果

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

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

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

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

输出结果

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

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

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

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

输出结果

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

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

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

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

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

输出结果

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

赶紧自己试试其它的

2.列表的遍历

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

例1

python">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

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

输出结果

1 4 3 6 5 2 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)

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


例3

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

输出结果

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

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


http://www.niftyadmin.cn/n/1359967.html

相关文章

如何将IOS版本的更新下载文件指向到自己的服务器

针对那些使用企业签名但是没有发布到AppSotre的IOS版本APP自动更新问题解决方案: 在apicloud中是这样说明的: 因为要填写plist地址所以不能向安卓那样直接填写服务器文件地址,但是直接填写apicloud中的包又没有签名,所以我们用以下…

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

列表推导式和列表的嵌套 1.列表推导式(列表生成式) 定义一个列表,共有三种方法 1.字面量语法 比如: names [] # 构造一个空列表names [刘备, 关羽, 张飞,曹操, 吕布] 2.构造器语法 item…

python前后端加密方式

后端加密方法: python后端加密方式: # 双重工加密 #bytes((7788).encode(utf-8)):为后端加密二把手,多加的锁,该参数可为空,必须加bytes才能实现 md5passwordhashlib.md5(bytes((7788).encode(utf-8))) #da…

python实现21根火柴游戏

python实现21根火柴游戏 今天用python实现一个21根火柴游戏,规则是 :有21根火柴,人和计算机轮流拿,人先拿(输入拿几根)计算机后拿,每次至少1根最多4根,拿到最后一根火柴的算输&…

excel双击文件打开时空白,使用菜单打开正常的解决办法

excel双击文件打开时空白,使用菜单打开正常的解决办法 打开 excel的选项 找到高级-》常规 取消“忽略使用动态数据交换...”的勾,确定。 问题解决。 转载于:https://www.cnblogs.com/kevin-Y/p/9910288.html

python中的字符串详解(附实现文字跑马灯效果)

python中的字符串详解 1.什么是字符串 ​ 相信大家对字符串应该是再熟悉不过了吧,因为日常生活中的一句话,或是路边的一则广告,其实它都相当于一个字符串,而顾名思义,字符串也就是一串串的由零个或多个字符组成的有限…

set(集合)的应用

1 //算法笔记STL部分set篇 2 #include<cstdio>3 #include<set>4 const int N 50;5 using namespace std;6 set<int> st[N]; //定义一个集合数组 7 void compare(int x, int y) //输出st[x]与st[y]交集与并集的比率 …

用python实现词频统计

用python实现词频统计 词频统计就是输入一段句子或者一篇文章&#xff0c;然后统计句子中每个单词出现的次数。 那么&#xff0c;这个在python中其实是很好实现的&#xff0c;下面我们来看看具体是怎样实现的&#xff0c;里面又用到了哪些知识呢&#xff1f; 输入一段话&…