【第三节】列表

news2025/2/13 12:45:39

上一节介绍了最常见的两种数据类型 字符串和数字 这一节将介绍列表

列表

首先,什么是列表?列表是由一系列按照特定顺序排列的元素组成,在python中由中括号[ ]定义

  1. 首先列表是一系列的元素,这些元素的种类可以不同,一个列表当中可以同时存在多种数据结构list_=['list1',1,2,'list2',3.14,[1,2,3,4]]
  2. 列表中的元素是有顺序的

列表的可变性

在python当中数据类型可以按照可变数据类型和不可变数据类型两种,上一节学习的两种数据结构都是不可变的 为了验证这个结论 可以执行下面的代码

str1 = 'hahaha'
print(id('hahaha'))
print(id(str1))
print('==='*20)
str1 = 'hehehe'
print(id('hahaha'))
print(id(str1))

请添加图片描述
可以看到,我们虽然改变了str1的值,但是字符串hahaha的id并没有更改
请添加图片描述
这只是变量的指向进行了改变,而不要误认为字符串是可变的数据类型!!!
数字和str一样的道理这里就不举例证明了

那么现在我们需要证明一下列表的可变性

list1 = ['a', 'b', 'c', 'd']
print(id(list1))
list1.pop()  # 删除列表末尾的元素
print(list1)
print(id(list1))

请添加图片描述
我们首先定义了一个列表,当中存放了四个字符串 分别是 a b c d 接着我们打印出了列表1的id,之后我们执行了pop方法(稍后会讲解这个方法) ,我们之后发现这个列表当中的最后一个字符串d被删除掉了,列表发生了改变,但是列表的id没有发生改变,这个说明同一个列表当中的元素是可以变化的!这里的变化包括列表中元素的个数,顺序,类型

列表是有序的

列表当中的元素是有顺序的,但是列表的第一个数据我们称为第零个数据

list1 = ['a', 'b', 'c', 'd']
# a是第0个数据  b是第1个数据  c是第二个数据  d是第三个数据

因此我们想要查看列表当中的元素时,可以使用下标(就是元素在列表当中的位置,记住是从零开始的)

请添加图片描述
当然,我们也可以使用这种下标的方式去修改列表当中的元素:

list1 = ['a', 'b', 'c', 'd']

list1[1] = 1  # 将下标为1 就是列表当中的第二个元素 更改为 int类型的数字1
print(list1)

请添加图片描述

修改,增加、删除列表中的元素

修改元素

就如同刚才演示的一样,你可以通过下标去修改列表中的元素

list1 = ['a', 'b', 'c', 'd']

list1[1] = 1  # 将下标为1 就是列表当中的第二个元素 更改为 int类型的数字1
print(list1)

添加元素

给列表添加元素主要有两个方法 append方法和insert方法

append方法

append方法可以向元素的末尾添加一个元素

list1 = ['a', 'b', 'c', 'd']

list1.append('e') # 向list1的末尾添加了e这个字符串 
print(list1)

insert

append方法是只能在列表的最后添加一个元素,如果我需要在其他位置添加一个元素呢?这时可以使用insert方法,insert方法可以在列表的任何位置添加新元素,所以,你需要传入新元素的位置索引(就是之前所说的下标)和数值

list1 = ['a', 'b', 'c', 'd']

list1.insert(1, "我是新来的")
print(list1)

请添加图片描述
我们将 我是新来的 这个字符串 插入到了 lst1列表的下标为1的位置(就是第二个元素)

删除元素

删除元素 这里介绍三种方法 del/pop/remove

del

del可以删除任意位置的元素,前提是得知道需要删除的元素的下标

list1 = ['a', 'b', 'c', 'd']
del list1[0]
print(list1)  # ['b', 'c', 'd']

pop

1 pop是具有返回值的,我们可以用变量接收这个值

list1 = ['a', 'b', 'c', 'd']
str1 = list1.pop()
print('被删除的元素是:{} 现在列表当中还剩下:{}'.format(str1, list1))
# 被删除的元素是:d 现在列表当中还剩下:['a', 'b', 'c']

直接使用pop可以删除最末尾的一个元素,并且将删除的数据返回

当然了pop是可以删除任意位置的元素的,只需要传入对应的下标

list1 = ['a', 'b', 'c', 'd']
str1 = list1.pop(1)
print('被删除的元素是:{} 现在列表当中还剩下:{}'.format(str1, list1))

这里我们删除了下标为1的元素

remove

在一个杂乱的列表当中,如果需要删除列表当中所有的a,我们该怎么办呢?remove方法就可以根据值来删除元素

list1 = ['a', 'b', 'c', 'd']
list1.remove('c')
print(list1)  # ['a', 'b', 'd']

组织列表

sort方法

sort方法可以将列表按照英文字母的顺序进行排序,这个修改顺序是永久性的!

list1 = ['g', 'd', 'a', 'e', 'c', 'f', 'b', ]
list1.sort()
print(list1)
# ['a', 'b', 'c', 'd', 'e', 'f', 'g']

sort方法还接受两个参数key 和reverse,这两个参数不可以不给就像上面演示的一样。

list.sort(key=None,reverse=False)
key -主要用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素 进行排序
reverse - 排序规则 True 降序 False 升序 (默认)

# 先不带key参数的sort函数
li = [[1, 7], [1, 5], [2, 4], [1, 1]]
li.sort()
print(li)  # [[1, 1], [1, 5], [1, 7], [2, 4]] 默认按照 先0维排序,再1维排序


def fun(li):
    return li[1]


li.sort(key=fun)
print(li)  # [[1, 1], [2, 4], [1, 5], [1, 7]] 进行1维排序

sorted方法

这个方法也是进行排序的方法,但是这个不同于sort,sorted方法只是进行临时排序

list_c = [1, 2, 8, 3, 7, 9, 5, 7]
# sorted内置函数会返回一个排序后的新列表
list_d = sorted(list_c)
print("list_c: ", list_c)
print('list_d: ', list_d)

reverse方法

reverse方法直接将列表进行反转

aList = [123, 'xyz', 'zara', 'abc', 'xyz']

aList.reverse()

len方法

len方法可以查看列表的长度

aList = [123, 'xyz', 'zara', 'abc', 'xyz']
print(len(aList))

你可能遇见的坑

下标相关 IndexError

请添加图片描述

这个错误是因为你的下标超出了列表的长度,请谨记下标是从0开始而不是从1开始的

ValueError

请添加图片描述
在使用remove函数时,请确认删除的数值在列表当中,否则会报错

列表是可迭代的

对于什么是可迭代的,目前阶段不需要了解,在后期的博客当中我会介绍,现在我们只需要专注于基础,我们只需要可迭代的意味着可以去for循环遍历
请添加图片描述

list1 = ['g', 'd', 'a', 'e', 'c', 'f', 'b', ]
for i in list1:    #  注意for 循环的写法
    print(i)         #  缩进4个空格  这部分是循环体

关于更多的for循环的内容将在下一章节讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/639540.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python3 爬虫相关学习9:BeautifulSoup 官方文档学习

目录 1 BeautifulSoup 官方文档 2 用bs 和 requests 打开 本地html的区别:代码里的一段html内容 2.1 代码和运行结果 2.2 用beautiful 打开 本地 html 文件 2.2.1 本地html文件 2.2.2 soup1BeautifulSoup(html1,"lxml") 2.3 用requests打开 本地 h…

微服务治理【注册发现】Nacos

目录 Nacos是什么? Nacos有什么用? 使用 Nacos 服务发现的流程图 Nacos是什么? Nacos是阿里巴巴开源的一个服务发现、配置管理和服务管理平台,是一种基于云原生架构的动态服务发现和配置管理工具。 Nacos有什么用&#xff…

什么是API测试?开发必知的8种API自动化测试类型

API测试 API自动化测试在产品质量控制和CI/CD流程检测中扮演着非常重要的角色。与GUI测试不同,API测试可以更灵活应地适应发布周期短和频繁变更的需求或产品,而且也不会破坏测试输出结果。 什么是API测试? API是应用程序编程接口的首字母缩…

jetLinks协议开发对接真实设备方式

jetLinks协议开发对接真实设备方式 拿到设备确定设备的SDKSDK调用流程梳理SDK集成JetLinks 拿到设备 首先拿到设备,确认设备型号 然后登入海康威视官网,下载 https://www.hikvision.com/cn/support/tools/hitools/ 连接设备修改其对应的IP地址使得本…

信号都是如何产生的,干货满满

目录 一、哪三大阶段 二、产生信号 1、通过键盘产生信号 2、系统调用 3、软件条件产生信号 4、硬件异常产生信号 三、Term和core是什么 一、信号一生三大阶段 1、产生信号:由通过键盘、系统调用、软件条件、硬件异常产生这几种方法产生信号。 2、信号储存&a…

JMeter必知必会系列 —— JMeter基础

1.1 JMeter概述 JMeter简介 Apache JMeter™是Apache组织开发的一款开源软件,是典型的纯Java开发的应用程序,可以在不同平台比如Windows、Linux或macOS系统上进行软件测试。JMeter主要用于应用程序的功能负载测试以度量软件的性能,也可以用于…

项目使用tensorflow2会出错,下载并使用tensorflow1

背景:使用pycharm安装总显示安装失败,使用pip安装也不行,只能使用conda配置虚拟环境手动安装 1、下载安装anaconda 官网下载,双击安装。用anaconda就是想使用虚拟环境,万一没弄好直接删了重新搞就行。 2、创建虚拟环境…

Kendo UI R2 2023 crack

Kendo UI R2 2023 crack 新组件:角度PDFViewer 直接在Angular应用程序中查看PDF文件,无需第三方软件或附加组件。 凭借直观的分页机制、强大的搜索功能和灵活的缩放选项,用户可以轻松导航和浏览PDF内容。 角度16支架 Angular 16引入了一系列改…

AWS CodeWhisperer(代码辅助工具)使用体验

工具 1.vscode 2.AWS Toolkit插件 CodeWhisperer插件的功能 1.自动优化代码:CodeWhisperer插件可以通过代码分析来自动优化代码,从而提高代码的质量和效率。 2.智能代码提示:CodeWhisperer插件可以根据代码上下文提供智能代码提示&#x…

C语言之数组详解(1)(更新前面数组博客的不足)

目录 一、一维数组 1.一维数组的创建和初始化 (1).数组的创建 (2).数组的初始化 2.一维数组的使用 3.一维数组在内存中的存储 二、二维数组 1.二维数组的创建和初始化 (1).二维数组的创建 (2).二维数组的初始化 2.二维数组的使用 3.二维数组在内存中的存储 三、数组作为函数参…

尚硅谷大数据技术Spark教程-笔记08【SparkSQL(介绍、特点、数据模型、核心编程、案例实操、总结)】

尚硅谷大数据技术-教程-学习路线-笔记汇总表【课程资料下载】视频地址:尚硅谷大数据Spark教程从入门到精通_哔哩哔哩_bilibili 尚硅谷大数据技术Spark教程-笔记01【SparkCore(概述、快速上手、运行环境、运行架构)】尚硅谷大数据技术Spark教程…

14.一天搞定主流小程序按分类列表显示文章1

小程序按分类列表显示文章1 (视频对应无13) 本教程均在第一节中项目启动下操作 小程序按分类列表显示文章1 (视频对应无13)前言一、新增分类界面:![在这里插入图片描述](https://img-blog.csdnimg.cn/1dffd20abc8f47d3961dee59426f3a8f.png)二.新增接口apiflex布局组件数据表绑…

Cocos creator常驻节点使用方式addPersistRootNode

最近在做小游戏的时候,遇到了进入result场景时候的传值问题。 场景加载传值,通过常驻节点实现。 在game_scene中添加常驻节点GameResultData空节点。 创建脚本GameResultData.ts,声明要传递的值的内容。 const {ccclass, property} cc._de…

vscode配置格式化

安装好插件 : Vetur 打开vscode --> 文件 --> 首选项 --> 设置 --> 扩展 --> vetur 点击: 写入以下代码 // { // "files.autoSave": "onFocusChange", // "explorer.confirmDelete": false, // "editor.…

南大通用GBase 8c 多模多态分布式数据库系列一之基本介绍、核心技术、架构演进

前言 随着传统的关系型SQL数据库(Oracle,MySQL,PostgreSQL等)难以满足日益增长的高数据量、快速数据处理要求、高数据库安全及强容灾能力要求(RPO,RTO)等挑战,尽管NoSQL非关系型数据…

【超详细练气篇】STL之string类---常见接口函数(1)

个人主页:平行线也会相交💪 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】💌 本专栏旨在记录C的学习路线,望对大家有所帮助🙇‍ 希望我们一起努力、成长&…

企业级ChatGPT开发入门实战直播21课第2课 运行日志及代码解析

企业级ChatGPT开发入门实战直播21课第2课 运行日志及代码解析 Gavin老师在企业级ChatGPT开发入门实战直播21课第2课中,讲解的ChatGPT应用案例开发架构图: ChatGPT案例运行日志 2023-06-11 16:06:57 DEBUG Calling on_part_begin with no data 2023-06-11

完型填空技巧

完形中分值最高的是逻辑关系题,逻辑关系分为两种,一种是选项就是逻辑关系的,例: Given the advantages of electronic money, you might thinkthat we would move quickly to the cashless society in which allpayments are made electronic…

常用设计模式(三)

接着之前的思路今天来介绍一下常用的设计模式有哪些 单例模式(Singleton Pattern) 又称为单体模式,保证一个类只有一个实例,并提供一个访问它的全局访问点。也就是说,第二次使用同一个类创建新对象的时候&#xff0c…

机器学习-8 集成学习

集成学习 集成学习理论集成学习概述集成学习理论 随机森林算法原理Scikit-learn中的随机森林分类器函数原型sklearn.ensemble.RandomForestClassifier(n_estimators10,criteriongini,max_depthNone,min_samples_split2,min_samples_leaf1,min_weight_fraction_leaf0.0,max_feat…