Python数据容器——列表(list)
数据容器入门
Python中的数据容器:
一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素
每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。
数据容器根据特点的不同,如:是否支持重复元素,是否可以修改,是否有序,等
分为5类,分别是:
列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)
数据容器:
1、List(列表)入门
1、list(列表)就是C语言里的数组。
字面量:[元素1,元素2,元素3]
定义变量:变量名称 = [元素1,元素2,元素3]
定义空列表:
变量名称 = [] 或 变量名称 = list()
元素可以是不同类型。例如:
list1 = ['Hello', 111, True]2、列表可以嵌套:
list2 = [['Hello', 111, True], ['world', 222, False]]3、可以使用列表的下标索引从列表中取出元素
list1 = ['Hello', 111, True] print(list1[0]) # 输出Hello print(List[-1]) # 反向索引,输出 True,从-1开始,依次递减 -1,-2……list2 = [['Hello', 111, True], ['world', 222, False]] print(list2[1]) print(list2[0][1])""" 输出结果: ['world', 222, False] 111 """4、列表的常用方法(操作)
插入元素、删除元素、清空列表、修改元素、统计元素个数
等等功能,这些功能我们都称之为:列表的方法在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法
class Student:def add(self,x,y):return x+y方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同,只有这一点不同:
函数的使用:num add(1,2)
方法的使用:student = Student()num = student.add(1,2)
列表内部提供了很多方法:注意:方法后是小括号()
方法 功能或注意点 查找: 列表名.index(元素)
查找指定元素在列表的下标
如果找不到,报错ValueError
修改:列表名[下标] = 值 是重新赋值,“列表名[下标] = 值”中的值会替换原来的值 插入:
列表名.insert(下标,元素)
是在指定的地方插入指定的元素,“列表名.index(下标,元素)”就是在该下标下插入该元素。
需要注意的是:1、这里是insert,不是index。
2、插入后,后面的元素会后移,而不是被替换掉。
3、是小括号,不是中括号。
追加:
单个元素:
列表名.append(元素)
列表名.extend(其他数据容器)
append()是将指定元素追加到列表的尾部。
extend()是将其他数据容器的内容取出,依次追加到列表尾部。
通过指定下标来删除:
1、del 列表名[下标]
2、列表名.pop(下标)
通过指定元素来删除:
列表名.remove(元素)
通过指定元素来删除时,是删除某元素在列表中的第一个匹配项 清空列表:
列表名.clear()
结果:[] 统计某元素在列表内的数量:
列表名.count(元素)
不可以查询到表中表的内容。 统计列表长度
len(列表名)例如:
# 查询方法 list1 = ["Hello", "World", "!"] index = list1.index("Hello") print(index) # 输出结果:0 (这表明是正向的索引)list2 = [["Hello", 111, True], ['world', 222, False]] index = list2.index("Hello") print(index) # 输出:ValueError: 'Hello' is not in list ''' 要查找的元素 "Hello" 是一个字符串, 而列表中的元素是嵌套列表。 在这种情况下,需要使用循环来遍历列表 并检查子列表中的元素。 否则会报错。 修正后:↓ ''' for i in range(len(list2)):if "Hello" in list2[i]:index = ibreak print(index) # 输出结果:0# 修改元素值 list1 = ["Hello", "World", "!"] list1[1] = "Python" # 正向下标 list1[-1] = "~" # 反向下标 print(list1) # 输出结果:['Hello', 'Python', '~']# 插入元素值 list1 = ["Hello", "World", "!"] list1.insert(1,"Python") list1.insert(-1, "~") print(list1) # 输出结果:['Hello', 'Python', 'World', '~', '!']# 追加元素 list1 = ["Hello", "World", "!"] list1.append("~") print(list1) # 输出结果:['Hello', 'World', '!', '~']list2 = [1, 2, 3] list2.append([4, 5, 6]) # list2.append(7, 8) #这个会报错,只能追加单个元素的方法 print(list2) # 输出结果:[1, 2, 3, [4, 5, 6]]list2.extend(list1) # 追加其他数据容器 print(list2) # 输出结果:[1, 2, 3, [4, 5, 6], 'Hello', 'World', '!', '~']# 通过指定下标来删除元素 list1 = ["Hello", "World", "!"] list2 = [1, 2, 3]del list1[0] element = list2.pop(0) # 用element来接受删点的元素print(list1) # 输出结果:['World', '!'] print(list2) # 输出结果:[2, 3] print(element) # 输出结果:1# 通过指定元素来删除 list3 = [1, 1, 2, 3] list3.remove(1) print(list3) # 输出结果:[1, 2, 3]# 清空列表 list3 = [1, 1, 2, 3] list3.clear() print(list3) # 输出结果:[]# 统计元素1的个数 list3 = [1, 1, 2, 3] count = list3.count(1) print(count) # 输出结果:2# 统计列表长度 print(len(list3)) # 输出结果:4# 综合训练 list5 =[21, 25, 21, 23, 22, 20]list5.append(31) # 追加一个数字31到列表的尾部 list5.extend([29, 33, 30]) # 追加一个新列表[29,33,30]到列表的尾部 num1 = list5[0] # 取出第一个元素(应是:21) num2 = list5[-1] # 取出最后一个元素(应是:30) index = list5.index(31) # 查找元素31所在的位置print(f"追加一个数字31到列表的尾部后的list5是:{list5}") print(f"追加一个新列表[29,33,30]到列表的尾部后list5是:{list5}") print(f"取出的第一个元素是: {num1}") print(f"取出最后一个元素是: {num2}") print(f"元素31所在的位置是: {index}")""" 输出结果: 追加一个数字31到列表的尾部后的list5是:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30] 追加一个新列表[29,33,30]到列表的尾部后list5是:[21, 25, 21, 23, 22, 20, 31, 29, 33, 30] 取出的第一个元素是: 21 取出最后一个元素是: 30 元素31所在的位置是: 6 """
2、1ist(列表)的遍历列表的遍历有两种:使用while循环,遍历列表的元素和使用for循环,遍历列表的元素。
while循环:
index = 0
while index < len(列表名):
元素 = 列表名[index]
其他处理……
index += 1 #最关键的一步,千万别忘记。
除了while:循环外,Python中还有另外一种循环形式:for循环。
对比while,for循环更加适合对列表等数据容器进行遍历。for 临时变量 in 数据容器:
对临时变量进行处理
for循环中,会把取出的变量赋值给临时变量
# 通过while来完成列表的遍历 list3 = [1, 1, 2, 3] print("列表的元素值是:", end=" ")index = 0 # 从0下标开始遍历 while index < len(list3):element = list3[index] # 取出index下标对应的元素print(element, end=" ")index += 1 # 千万别忘了这一点,循环的关键;python里不支持index++ # 输出结果:列表的元素值是: 1 1 2 3 print()# 通过for来完成列表的遍历 for element in list3:print(f"列表的元素有:{element}")list4 = [["Hello", 111, True], ['world', 222, False]] """ 输出结果: 列表的元素有:1 列表的元素有:1 列表的元素有:2 列表的元素有:3 """两者之间比较:
while循环和for循环,都是循环语句,但细节不同:
·在循环控制上:
while循环可以自定循环条件,并自行控制
for循环不可以自定循环条件,只可以一个个从容器内取出数据
·在无限循环上:
while循环可以通过条件控制做到无限循环
for循环理论上不可以,因为被遍历的容器容量不是无限的
在使用场景上:
while循环适用于任何想要循环的场景
for循环适用于逾历数据容器的场景或简单的固定次数循环场景
相关文章:
Python数据容器——列表(list)
数据容器入门 Python中的数据容器: 一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素 每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。 数据容器根据特点的不同,如:是否支持重复元…...
Linux CEF(Chromium Embedded Framework)源码下载编译详细记录
Linux CEF(Chromium Embedded Framework)源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放,需要自行编译源码,将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 前置条件 下载的过程非…...
Adaptive AUTOSAR—— Communication Management 3.1
9 Communication Management 9.1 What is Communication Management? 通信管理是自适应平台架构中的一个功能集群。 作为一个功能集群,通信管理向应用程序提供了一个C++ API,实现了面向服务的通信。服务是一个由应用程序提供的功能单元,可以在运行时被另一个应用程序动态…...
VMnet0 桥接设置
VMnet0 一定要设置为你的硬件物理网卡,不能设置自动,不然后,网线一断,就再也连不上了。必须重启电脑才能连上,这个问题找了很久才找到。 下面有个hyper-V虚拟网卡,如果选自动的话,物理网卡一掉…...
Sublime Text 4 Build 4151 4152 发布及注册方法
Sublime Text 是一个商业代码编辑器。它原生支持许多编程语言和标记语言,用户可以通过插件来扩展它的功能,这些插件通常是由社区建立的,并以自由软件许可证的形式维护。为了方便插件,Sublime Text 有一个 Python API。 Sublime T…...
第八篇: K8S Prometheus Operator实现Ceph集群企业微信机器人告警
Prometheus Operator实现Ceph集群企业微信告警 实现方案 我们的k8s集群与ceph集群是部署在不同的服务器上,因此实现方案如下: (1) ceph集群开启mgr内置的exporter服务,用于获取ceph集群的metrics (2) k8s集群通过 Service Endponit Ser…...
软件单元测试
单元测试目的和意义 对于非正式的软件(其特点是功能比较少,后续也不有新特性加入,不用负责维护),我们可以使用debug单步执行,内存修改,检查对应的观测点是否符合要求来进行单元测试,…...
Redis | 集群模式
Redis | 集群模式 随着互联网应用规模的不断扩大,单一节点的数据库性能已经无法满足大规模应用的需求。为了提高数据库的性能和可扩展性,分布式数据库成为了解决方案之一。Redis 作为一个高性能的内存数据库,自然也有了自己的分布式部署方式…...
8.3day04git+数据结构
文章目录 git版本控制学习高性能的单机管理主机的心跳服务算法题 git版本控制学习 一个免费开源,分布式的代码版本控制系统,帮助开发团队维护代码 作用:记录代码内容,切换代码版本,多人开发时高效合并代码内容 安装g…...
04-5_Qt 5.9 C++开发指南_QComboBox和QPlainTextEdit
文章目录 1. 实例功能概述2. 源码2.1 可视化UI设计2.2 widget.h2.3 widget.cpp 1. 实例功能概述 QComboBox 是下拉列表框组件类,它提供一个下拉列表供用户选择,也可以直接当作一个QLineEdit 用作输入。OComboBox 除了显示可见下拉列表外,每个…...
Sqlserver_Oracle_Mysql_Postgresql不同关系型数据库之主从延迟的理解和实验
关系型数据库主从节点的延迟是否和隔离级别有关联,个人认为两者没有直接关系,主从延迟在关系型数据库中一般和这两个时间有关:事务日志从主节点传输到从节点的时间事务日志在从节点的应用时间 事务日志从主节点传输到从节点的时间࿰…...
Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算
笔者在近一两年接触了Clickhouse数据库,在项目中也进行了一些实践,但一直都没有一些技术文章的沉淀,近期打算做个系列,通过一些具体的场景将Clickhouse的用法进行沉淀和分享,供大家参考。 首先我们假设一个Clickhouse数…...
做好“关键基础设施提供商”角色,亚马逊云科技加快生成式AI落地
一场关于生产力的革命已在酝酿之中。全球管理咨询公司麦肯锡在最近的报告《生成式人工智能的经济潜力:下一波生产力浪潮》中指出,生成式AI每年可能为全球经济增加2.6万亿到4.4万亿美元的价值。在几天前的亚马逊云科技纽约峰会中,「生成式AI」…...
如何使用 ChatGPT 规划家居装修
你正在计划家庭装修项目,但不确定从哪里开始?ChatGPT 随时为你提供帮助。从集思广益的设计理念到估算成本,ChatGPT 可以简化你的家居装修规划流程。在本文中,我们将讨论如何使用 ChatGPT 有效地规划家居装修,以便你的项…...
题解 | #1002.Random Nim Game# 2023杭电暑期多校7
1002.Random Nim Game 诈骗博弈题 题目大意 Nim是一种双人数学策略游戏,玩家轮流从不同的堆中移除棋子。在每一轮游戏中,玩家必须至少取出一个棋子,并且可以取出任意数量的棋子,条件是这些棋子都来自同一个棋子堆。走最后一步棋…...
篇九:组合模式:树形结构的力量
篇九:“组合模式:树形结构的力量” 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料,…...
【注册表】windows系统注册表常用修改方案
文章目录 ◆ 修改IE浏览器打印页面参数设置◆气泡屏幕保护◆彩带屏幕保护程序◆过滤IP(适用于WIN2000)◆禁止显示IE的地址栏◆禁止更改IE默认的检查(winnt适用)◆允许DHCP(winnt适用)◆局域网自动断开的时间(winnt适用)◆禁止使用“重置WEB设置”◆禁止更…...
ant-design-vue 4.x升级问题-样式丢失问题
[vue] ant-design-vue 4.x升级问题-样式丢失问题 项目环境问题场景解决方案 该文档是在升级ant-design-vue到4.x版本的时候遇到的问题 项目环境 "vue": "^3.3.4", "ant-design-vue": "^4.0.0", "vite": "^4.4.4&quo…...
【果树农药喷洒机器人】Part3:变量喷药系统工作原理介绍
本专栏介绍:免费专栏,持续更新机器人实战项目,欢迎各位订阅关注。 关注我,带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章! 文章目录 一、变量喷药系统工作原理二、液压通路设计与控制系统封装2.1液压通路…...
GoogLeNet创新点总结
GoogLeNet是一种深度卷积神经网络架构,于2014年由Google团队提出,是ILSVRC(ImageNet Large Scale Visual Recognition Challenge)比赛的冠军模型,其创新点主要集中在以下几个方面: Inception模块&#…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Xshell远程连接Kali(默认 | 私钥)Note版
前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
