当前位置: 首页 > news >正文

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中的数据容器&#xff1a; 一种可以容纳多份数据的数据类型&#xff0c;容纳的每一份数据称之为1个元素 每一个元素&#xff0c;可以是任意类型的数据&#xff0c;如字符串、数字、布尔等。 数据容器根据特点的不同&#xff0c;如&#xff1a;是否支持重复元…...

Linux CEF(Chromium Embedded Framework)源码下载编译详细记录

Linux CEF&#xff08;Chromium Embedded Framework&#xff09;源码下载编译 背景 由于CEF默认的二进制分发包不支持音视频播放&#xff0c;需要自行编译源码&#xff0c;将ffmpeg开关打开才能支持。这里介绍的是Linux平台下的CEF源码下载编译过程。 前置条件 下载的过程非…...

Adaptive AUTOSAR—— Communication Management 3.1

9 Communication Management 9.1 What is Communication Management? 通信管理是自适应平台架构中的一个功能集群。 作为一个功能集群,通信管理向应用程序提供了一个C++ API,实现了面向服务的通信。服务是一个由应用程序提供的功能单元,可以在运行时被另一个应用程序动态…...

VMnet0 桥接设置

VMnet0 一定要设置为你的硬件物理网卡&#xff0c;不能设置自动&#xff0c;不然后&#xff0c;网线一断&#xff0c;就再也连不上了。必须重启电脑才能连上&#xff0c;这个问题找了很久才找到。 下面有个hyper-V虚拟网卡&#xff0c;如果选自动的话&#xff0c;物理网卡一掉…...

Sublime Text 4 Build 4151 4152 发布及注册方法

Sublime Text 是一个商业代码编辑器。它原生支持许多编程语言和标记语言&#xff0c;用户可以通过插件来扩展它的功能&#xff0c;这些插件通常是由社区建立的&#xff0c;并以自由软件许可证的形式维护。为了方便插件&#xff0c;Sublime Text 有一个 Python API。 Sublime T…...

第八篇: K8S Prometheus Operator实现Ceph集群企业微信机器人告警

Prometheus Operator实现Ceph集群企业微信告警 实现方案 我们的k8s集群与ceph集群是部署在不同的服务器上&#xff0c;因此实现方案如下&#xff1a; (1) ceph集群开启mgr内置的exporter服务&#xff0c;用于获取ceph集群的metrics (2) k8s集群通过 Service Endponit Ser…...

软件单元测试

单元测试目的和意义 对于非正式的软件&#xff08;其特点是功能比较少&#xff0c;后续也不有新特性加入&#xff0c;不用负责维护&#xff09;&#xff0c;我们可以使用debug单步执行&#xff0c;内存修改&#xff0c;检查对应的观测点是否符合要求来进行单元测试&#xff0c…...

Redis | 集群模式

Redis | 集群模式 随着互联网应用规模的不断扩大&#xff0c;单一节点的数据库性能已经无法满足大规模应用的需求。为了提高数据库的性能和可扩展性&#xff0c;分布式数据库成为了解决方案之一。Redis 作为一个高性能的内存数据库&#xff0c;自然也有了自己的分布式部署方式…...

8.3day04git+数据结构

文章目录 git版本控制学习高性能的单机管理主机的心跳服务算法题 git版本控制学习 一个免费开源&#xff0c;分布式的代码版本控制系统&#xff0c;帮助开发团队维护代码 作用&#xff1a;记录代码内容&#xff0c;切换代码版本&#xff0c;多人开发时高效合并代码内容 安装g…...

04-5_Qt 5.9 C++开发指南_QComboBox和QPlainTextEdit

文章目录 1. 实例功能概述2. 源码2.1 可视化UI设计2.2 widget.h2.3 widget.cpp 1. 实例功能概述 QComboBox 是下拉列表框组件类&#xff0c;它提供一个下拉列表供用户选择&#xff0c;也可以直接当作一个QLineEdit 用作输入。OComboBox 除了显示可见下拉列表外&#xff0c;每个…...

Sqlserver_Oracle_Mysql_Postgresql不同关系型数据库之主从延迟的理解和实验

关系型数据库主从节点的延迟是否和隔离级别有关联&#xff0c;个人认为两者没有直接关系&#xff0c;主从延迟在关系型数据库中一般和这两个时间有关&#xff1a;事务日志从主节点传输到从节点的时间事务日志在从节点的应用时间 事务日志从主节点传输到从节点的时间&#xff0…...

Clickhouse学习系列——一条SQL完成gourp by分组与不分组数值计算

笔者在近一两年接触了Clickhouse数据库&#xff0c;在项目中也进行了一些实践&#xff0c;但一直都没有一些技术文章的沉淀&#xff0c;近期打算做个系列&#xff0c;通过一些具体的场景将Clickhouse的用法进行沉淀和分享&#xff0c;供大家参考。 首先我们假设一个Clickhouse数…...

做好“关键基础设施提供商”角色,亚马逊云科技加快生成式AI落地

一场关于生产力的革命已在酝酿之中。全球管理咨询公司麦肯锡在最近的报告《生成式人工智能的经济潜力&#xff1a;下一波生产力浪潮》中指出&#xff0c;生成式AI每年可能为全球经济增加2.6万亿到4.4万亿美元的价值。在几天前的亚马逊云科技纽约峰会中&#xff0c;「生成式AI」…...

如何使用 ChatGPT 规划家居装修

你正在计划家庭装修项目&#xff0c;但不确定从哪里开始&#xff1f;ChatGPT 随时为你提供帮助。从集思广益的设计理念到估算成本&#xff0c;ChatGPT 可以简化你的家居装修规划流程。在本文中&#xff0c;我们将讨论如何使用 ChatGPT 有效地规划家居装修&#xff0c;以便你的项…...

题解 | #1002.Random Nim Game# 2023杭电暑期多校7

1002.Random Nim Game 诈骗博弈题 题目大意 Nim是一种双人数学策略游戏&#xff0c;玩家轮流从不同的堆中移除棋子。在每一轮游戏中&#xff0c;玩家必须至少取出一个棋子&#xff0c;并且可以取出任意数量的棋子&#xff0c;条件是这些棋子都来自同一个棋子堆。走最后一步棋…...

篇九:组合模式:树形结构的力量

篇九&#xff1a;“组合模式&#xff1a;树形结构的力量” 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/。 另外有2本不错的关于设计模式的资料&#xff0c…...

【注册表】windows系统注册表常用修改方案

文章目录 ◆ 修改IE浏览器打印页面参数设置◆气泡屏幕保护◆彩带屏幕保护程序◆过滤IP(适用于WIN2000)◆禁止显示IE的地址栏◆禁止更改&#xff29;&#xff25;默认的检查(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:变量喷药系统工作原理介绍

本专栏介绍&#xff1a;免费专栏&#xff0c;持续更新机器人实战项目&#xff0c;欢迎各位订阅关注。 关注我&#xff0c;带你了解更多关于机器人、嵌入式、人工智能等方面的优质文章&#xff01; 文章目录 一、变量喷药系统工作原理二、液压通路设计与控制系统封装2.1液压通路…...

GoogLeNet创新点总结

GoogLeNet是一种深度卷积神经网络架构&#xff0c;于2014年由Google团队提出&#xff0c;是ILSVRC&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;比赛的冠军模型&#xff0c;其创新点主要集中在以下几个方面&#xff1a;   Inception模块&#…...

命令行控制中心:提升开发效率的聚合与自动化工具

1. 项目概述&#xff1a;一个面向开发者的命令行控制中心最近在GitHub上看到一个挺有意思的项目&#xff0c;叫jendrypto/command-center。光看名字&#xff0c;你可能会联想到科幻电影里那种布满屏幕、控制一切的舰桥。但在开发者的世界里&#xff0c;它其实是一个更接地气、更…...

书成紫微动,律定凤凰驯:海棠山铁哥,用两部作品走完了千年谶语的路

书成紫微动&#xff0c;律定凤凰驯。 ——千年谶语&#xff0c;今终圆满。一、悬在文脉上空的千年谶语“书成紫微动&#xff0c;律定凤凰驯”自诞生之日起&#xff0c;这句庙堂吉颂便高悬于华夏文脉之上&#xff0c;无人可触、无人能落。 文人墨客解其字&#xff0c;玄学爱好者…...

线程相关知识

线程是进程内的一条独立执行流&#xff0c;是操作系统调度 CPU 的最小单位&#xff0c;共享进程的地址空间与资源&#xff0c;有自己独立的栈、寄存器、程序计数器。一、核心本质拆解1.从属关系 进程是资源分配最小单位&#xff08;内存、文件、句柄&#xff09;&#xff1b; 线…...

【DeepSeek Chat功能测试全链路指南】:20年AI工程师亲测的7大核心场景验证法

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek Chat功能测试的底层逻辑与验证哲学 DeepSeek Chat 的功能测试并非仅面向接口响应的“黑盒点击”&#xff0c;而是建立在模型行为可解释性、推理路径可追溯性与系统边界可控性三重基石之上的验…...

Clawless框架:构建合规网页数据抓取系统的设计哲学与实践指南

1. 项目概述与核心价值最近在GitHub上闲逛&#xff0c;发现了一个名为“Clawless”的项目&#xff0c;作者是HainanZhao。这个项目名挺有意思&#xff0c;“Clawless”直译是“无爪”&#xff0c;听起来像是一个温和无害的工具。点进去一看&#xff0c;发现它是一个用于自动化处…...

vue基于springboot框架的全国非物质文化遗产展示平台

目录同行可拿货,招校园代理 ,本人源头供货商项目概述技术架构核心功能特色设计部署与扩展项目技术支持源码获取详细视频演示 &#xff1a;同行可合作点击我获取源码->->进我个人主页-->获取博主联系方式同行可拿货,招校园代理 ,本人源头供货商 项目概述 全国非物质文…...

嵌入式飞行控制实战:从传感器融合到PID调参的无人机飞控开发指南

1. 项目概述与核心价值最近在嵌入式开发圈子里&#xff0c;一个名为trsdn/nanopielot的项目引起了我的注意。乍一看这个名字&#xff0c;它像是一个针对特定硬件平台&#xff08;比如树莓派 Pico 或类似的 RP2040 微控制器&#xff09;的飞行控制项目。nanopi可能指代 NanoPi 系…...

终极Vue 3日期时间选择器:如何构建企业级日期处理解决方案

终极Vue 3日期时间选择器&#xff1a;如何构建企业级日期处理解决方案 【免费下载链接】vue3-date-time-picker Datepicker component for Vue 3 项目地址: https://gitcode.com/gh_mirrors/vu/vue3-date-time-picker Vue3-DateTime-Picker是一个基于Vue 3 Composition …...

AI人工智能未来发展趋势

当ChatGPT实现自然语言的深度交互&#xff0c;当AI机器人走进工厂车间&#xff0c;当智能算法助力疫苗研发提速&#xff0c;人工智能已从实验室的前沿探索&#xff0c;成为渗透社会各领域的核心生产力。当前&#xff0c;AI技术正处于从“弱智能”向“强智能”跨越的关键节点&am…...

如何提升SQL存储过程逻辑复用_封装通用存储过程函数

SQL Server无函数式存储过程&#xff0c;需用标量函数&#xff08;单值计算&#xff09;或表值函数&#xff08;结果集&#xff09;替代&#xff1b;标量函数禁用DML和非确定性函数&#xff0c;ITVF性能优于MSTVF&#xff1b;MySQL函数须声明DETERMINISTIC等属性&#xff1b;跨…...