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

Py列表(list)

目录

正向索引:

反向索引:

嵌套列表:

 修改列表中的值

列表常用的方法

实例

练习:


正向索引

从0开始,依次递增。第一个元素的索引为0,第二个元素的索引为1,依此类推。

列表的下标索引(正向)

例如:

fruits = ['apple', 'banana', 'cherry']
print(fruits[0])  # 输出 'apple'
print(fruits[1])  # 输出 'banana'

反向索引

从-1开始,依次递减。最后一个元素的索引为-1,倒数第二个元素的索引为-2,以此类推。

列表的下标索引(反向)

例如:

print(fruits[-1])  # 输出 'cherry'
print(fruits[-2])  # 输出 'banana'

嵌套列表:

最底层的列表被标记为"元素0"、"元素1"、"元素0"和"元素1",这些元素分别属于两个不同的列表,即"列表(list)"0和"列表(list)"1。这两个列表又作为元素存在于最上层的"列表(list)"中。

# 创建一个嵌套列表
nested_list = [[1, 2], [3, 4]]# 访问嵌套列表中的元素
print(nested_list[0][0])  # 输出: 1
print(nested_list[0][1])  # 输出: 2
print(nested_list[1][0])  # 输出: 3
print(nested_list[1][1])  # 输出: 4

最底层的列表被标记为"元素0"、"元素1"、"元素0"和"元素1",这些元素分别属于两个不同的列表,即"列表(list)"0和"列表(list)"1。这两个列表又作为元素存在于最上层的"列表(list)"中。

线性表(常见的线性表-----数组 栈 队列 链表) ---- 基于链表的数据结构实现的

注意:python里面是没有数组的 数组的存储空间是连续的,它删除比较麻烦,因为内存是连续的,查询速度特别快(因为是连续的)-----------增删改的效率比较低

栈:先进后出,后进先出

队列:先进先出,后进后出

链表(比较特殊的数据结构):(只有一个6byte的空间,但是要存8byte的数组,肯定是不够的,所以是有很多零碎的内存块,科学家就使用线将各种零碎的内存块连接起来)

单向链表:节约内存

没有头节点,只有尾节点

双向链表

一般有三个节点,第一个节点存上一个节点的地址(头指针),中间的存储数据,最后一个存下一个节点的内存(尾指针)

Python中的列表就是基于双向链表实现的(查询慢,增删快)

  • 定义

    由弱数据类型语言决定,直接赋值给变量

    如: ls = [ 2,3,4,5 ]

    使用全局函数list对列表进行定义

     ls = list()
    ​ls = list([1,2,3,4,5,""])
    ​#容器中的每一个值,我们叫做元素
  • 如何访问元素

    使用下标来访问,注意下标是从0开始的(外国人喜欢从0开始计数) ls[0] 如果下标超过范围会报异常, 可以用下标来访问值,也可以修改值,另外下标也可以是负数

    求列表的长度?

    全局函数len(容器) -----------返回容器的长度

  • 如何遍历容器

     For循环For i in ls:Print(i)
    ​While循环Index = 0While index < len(ls):Print(ls[index])Index += 1

     修改列表中的值

    示例 1:修改列表中特定位置的值

    假设有一个列表,你想修改其中某个位置的元素。

    fruits = ['apple', 'banana', 'cherry']
    # 修改索引为1的元素,即把'banana'改为'orange'
    fruits[1] = 'orange'
    print(fruits)  # 输出: ['apple', 'orange', 'cherry']

    示例 2:遍历列表并修改所有值

    如果想要基于某种条件或运算修改列表中的每一个元素,可以遍历列表。

    numbers = [1, 2, 3, 4, 5]
    # 将列表中的每个元素都平方
    for i in range(len(numbers)):numbers[i] = numbers[i] ** 2
    print(numbers)  # 输出: [1, 4, 9, 16, 25]

    或者使用列表推导式更简洁地实现同样的功能:

    numbers = [1, 2, 3, 4, 5]
    squared_numbers = [x ** 2 for x in numbers]
    print(squared_numbers)  # 输出: [1, 4, 9, 16, 25]

    示例 3:修改嵌套列表中的值

    对于嵌套列表(列表中的列表),你需要通过两层索引来访问和修改内部列表的元素。

    nested_list = [[1, 2], [3, 4]]
    # 修改嵌套列表中第二个列表的第一个元素
    nested_list[1][0] = 'changed'
    print(nested_list)  # 输出: [[1, 2], ['changed', 4]]

列表常用的方法

方法名

含义
append()向列表尾部追加元素
insert(index, object)向指定的位置追加元素
sort()列表排序(只能排Int)字母按照ASCII值进行排序,类型不能混淆
index()查找元素第一次在列表中出现的位置,如果没有这个元素则会
reverse()将列表元素顺序翻转
remove()通过元素来移除元素,如果元素不存在则抛出异常
count()统计元素在列表中的个数
clear()清除元素
copy()浅拷贝对象(拷贝) 不等价于 = (引用传递),在堆内存中进行对象拷贝
extend()合并列表
pop()与append()相反,删除列表最后一个元素,并返回值这个元素,要删除指定位置的元素,用pop(i)方法,其中i是索引位置

实例

下面是一些关于如何使用 Python 列表方法的例子:

append() 方法:向列表尾部追加元素。

my_list = [1, 2, 3]
my_list.append(4)  # 添加元素 4 到列表末尾
print(my_list)  # 输出: [1, 2, 3, 4]

insert(index, object) 方法:向指定的位置追加元素。

my_list = [1, 2, 3, 4, 5]
my_list.insert(2, "new_element")  # 在索引 2 的位置插入元素
print(my_list)  # 输出: [1, 2, 'new_element', 3, 4, 5]

sort() 方法:列表排序(只能排Int)字母按照ASCII值进行排序,类型不能混淆。

my_list = [5, 1, 9, 3, 7]
my_list.sort()  # 对列表进行升序排列
print(my_list)  # 输出: [1, 3, 5, 7, 9]# 注意:对于非数字类型的元素,需要自定义比较函数或使用 sorted() 函数

index(element) 方法:查找元素第一次在列表中出现的位置,如果没有这个元素则抛出异常。

my_list = [1, 2, 3, 4, 5]
print(my_list.index(3))  # 输出: 2

reverse() 方法:将列表元素顺序翻转。

my_list = [1, 2, 3, 4, 5]
my_list.reverse()
print(my_list)  # 输出: [5, 4, 3, 2, 1]

remove(element) 方法:通过元素来移除元素,如果元素不存在则抛出异常。

my_list = [1, 2, 3, 4, 5]
my_list.remove(3)  # 移除元素 3
print(my_list)  # 输出: [1, 2, 4, 5]

count(element) 方法:统计元素在列表中的个数。

my_list = [1, 2, 3, 2, 1]
print(my_list.count(2))  # 输出: 2

clear() 方法:清除元素。

my_list = [1, 2, 3, 4, 5]
my_list.clear()
print(my_list)  # 输出: []

copy() 方法:浅拷贝对象(拷贝)不等于 = (引用传递),在堆内存中进行对象拷贝。

my_list = [1, 2, 3]
copied_list = my_list.copy()
print(copied_list)  # 输出: [1, 2, 3]

extend(iterable) 方法:合并列表。

my_list1 = [1, 2, 3]
my_list2 = [4, 5, 6]
my_list1.extend(my_list2)
print(my_list1)  # 输出: [1, 2, 3, 4, 5, 6]

pop([index]) 方法:与append()相反,删除列表最后一个元素,并返回值这个元素,要删除指定位置的元素,用pop(i)方法,其中i是索引位置。

my_list = [1, 2, 3, 4, 5]
print(my_list.pop())  # 输出: 5
print(my_list)  # 输出: [1, 2, 3, 4]my_list.pop(2)  # 删除索引为 2 的元素
print(my_list)  # 输出: [1, 2, 4]

练习:

使用Python列表实现学生年龄管理

在本篇博客中,我们将探讨如何使用Python的列表功能来处理与学生年龄相关的一系列任务。以下是我们的目标:

  • 定义一个学生年龄列表。
  • 在列表末尾追加元素。
  • 向列表末尾追加另一个列表。
  • 获取列表的第一个和最后一个元素。
  • 查找指定元素在列表中的索引位置。
  • 对列表进行排序。

初始化一个包含若干学生年龄的列表:

 
student = [21, 25, 21, 23, 22, 20]

模拟新学生加入班级的情景,我们使用append()方法向列表尾部添加一名31岁的学生年龄:

student.append(31)
print(student)  # 输出当前列表状态
# 输出: [21, 25, 21, 23, 22, 20, 31]

如果有多个学生同时加入,可以利用extend()方法将一个包含多个人年龄的列表合并进来。这里,新增了三位学生,年龄分别为29、33、30岁:

student_new = [29, 33, 30]
student.extend(student_new)
print(student)  # 输出: [21, 25, 21, 23, 22, 20, 31, 29, 33, 30]

在管理过程中,可能需要移除列表中的元素。这里,分别移除了最年轻(索引为0)和最新加入(索引为-1)的学生年龄,并打印移除的值:

num = student.pop(0) # 输出: 21 (移除并打印元素)
print(num)
num = student.pop(-1)  # 输出: 30 (移除并打印元素)
print(num)

为了查找特定学生年龄的位置,比如刚加入的31岁学生,我们使用index()方法获取其索引:

print(student.index(31))  # 输出: 6 (显示31在列表中的索引位置)

最后,为了便于分析或进一步处理,对整个年龄列表进行排序,保持数据有序:

student.sort()
print(student)  # 输出: [20, 21, 21, 22, 23, 25, 29, 31, 33] (列表按升序排列)

相关文章:

Py列表(list)

目录 正向索引&#xff1a; 反向索引&#xff1a; 嵌套列表&#xff1a; 修改列表中的值 列表常用的方法 实例 练习&#xff1a; 正向索引&#xff1a; 从0开始&#xff0c;依次递增。第一个元素的索引为0&#xff0c;第二个元素的索引为1&#xff0c;依此类推。 列表的下标…...

黑马es0-1实现自动补全功能

1、安装分词器 上github上找人做好的分词器&#xff0c;放到es-plugin数据卷里&#xff0c;然后重启es即可 2、自定义分词器 elasticsearch中分词器(analyzer)的组成包含三部分: character filters:在tokenizer之前对文本进行处理。例如删除字符、替换字符 …...

react通过上下文深入传递数据

通常&#xff0c;您将通过 props 将信息从父组件传递到子组件。但是&#xff0c;如果必须将道具传递到中间的许多组件&#xff0c;或者应用中的许多组件需要相同的信息&#xff0c;则传递道具可能会变得冗长且不方便。Context 允许父组件将一些信息提供给其下树中的任何组件&am…...

「代码厨房大揭秘:Python性能优化的烹饪秘籍!」

哈喽&#xff0c;我是阿佑&#xff0c;上篇咱们讲了 Socket 编程 —— 探索Python Socket编程&#xff0c;赋予你的网络应用隐形斗篷般的超能力&#xff01;从基础到实战&#xff0c;构建安全的聊天室和HTTP服务器&#xff0c;成为网络世界的守护者。加入我们&#xff0c;一起揭…...

【重学C语言】十六、联合、枚举、面向对象编程

【重学C语言】十六、联合、枚举、面向对象编程 联合定义联合体使用联合体注意事项枚举枚举的定义为枚举常量指定整数值枚举的使用枚举的打印枚举的优势注意事项面向对象编程1. 结构体(Structs)2. 封装(Encapsulation)3. 继承(Inheritance)...

Github2024-05-21 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-21统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10C项目1TypeScript项目1youtube-dl - 从YouTube和其他网站下载视频的命令行程序 创建周期:4951 天开发语言:Python协议类型:The …...

labview_开放协议

一、开放协议 二、硬件设置 英格索兰硬件设置&#xff1a; 三、配套测试软件 四、Labview代码...

AWS安全性身份和合规性之Amazon Macie

Amazon Macie是一项数据安全和数据隐私服务&#xff0c;它利用机器学习&#xff08;ML&#xff09;和模式匹配来发现和保护敏感数据。可帮助客户发现、分类和保护其敏感数据&#xff0c;以及监控其数据存储库的安全性。 应用场景&#xff1a; 敏感数据发现 一家金融服务公司…...

redis数据类型set,zset

华子目录 Set结构图相关命令sdiff key1 [key2]sdiffstore destination key1 [key2...]sinter key1 [key2...]sinterstore destination key1 [key2...]sunion key1 [key2...]sunionstore destination key1 [key2...]smove source destination memberspop key [count]sscan key c…...

央视网视频下载和花屏问题处理

央视网(www.cctv.com)视频下载往往是花屏的&#xff0c;如何处理呢&#xff1f; 如果您是IT技术开发者&#xff0c;那么您可以通过下面步骤自己实现。 用chrome浏览器&#xff0c;F2打开开发者工具&#xff0c;找到当前页面的network 然后找一个接口&#xff1a;https://vdn.a…...

四、通信和网络安全—局域网|广域网|远程连接和攻击技术(CISSP)

目录 1.局域网和广域网 1.1 WAN技术总结 2.远程连接—无线技术 2.1 VPN 2.2 隧道协议总结...

15、设计模式之责任链模式

责任链模式 顾名思义&#xff0c;责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#xff0c;通…...

神奇动物在哪里,但导演是微软

大数据产业创新服务媒体 ——聚焦数据 改变商业 一说到计算机视觉&#xff0c;大多数人第一时间联想到的便是“人脸识别”、“自动驾驶“、道路检测”等跟我们日常生活息息相关的关键词。而在2024年的5月末&#xff0c;微软在GitHub上面上传了这样一个计算机视觉的项目&#x…...

Flutter 中的 Flow 小部件:全面指南

Flutter 中的 Flow 小部件&#xff1a;全面指南 Flutter 的 Flow 是一个功能强大的布局小部件&#xff0c;它允许开发者在父组件的任意位置放置子组件。Flow 可以通过使用 FlowDelegate 完全自定义子组件的布局&#xff0c;这为创建复杂的自定义布局提供了极大的灵活性。本文将…...

【pyspark速成专家】11_Spark性能调优方法2

目录 ​编辑 二&#xff0c;Spark任务UI监控 三&#xff0c;Spark调优案例 二&#xff0c;Spark任务UI监控 Spark任务启动后&#xff0c;可以在浏览器中输入 http://localhost:4040/ 进入到spark web UI 监控界面。 该界面中可以从多个维度以直观的方式非常细粒度地查看Spa…...

吊顶的做法防踩坑,吊顶怎么省钱还好看

怎么做个好看的吊顶?你天天抬头看不? 现在楼房到手本身层高两米75左右,等铺完地暖和瓷砖还得增加几公分 如果再整个吊顶,就属于花钱买压抑了,吊顶就是遮丑, 某些比较显层高还亮堂,今天把做法分享出来 开发商给的毛坯两米8 做完地暖铺完瓷砖,层高是两米七八, 让木工在走廊两边…...

揭秘Tensor Core黑科技:如何让AI计算速度飞跃

揭秘 Tensor Core 底层&#xff1a;如何让AI计算速度飞跃 Tensor Core&#xff0c;加速深度学习计算的利器&#xff0c;专用于高效执行深度神经网络中的矩阵乘法和卷积运算&#xff0c;提升计算效率。 Tensor Core凭借混合精度计算与张量核心操作&#xff0c;大幅加速深度学习…...

为什么会有websocket(由来)

一、HTTP 协议的缺点和解决方案 1、HTTP 协议的缺点和解决方案 用户在使用淘宝、京东这样的网站的时候&#xff0c;每当点击一个按钮其实就是发送一个http请求。那我们先来回顾一下http请求的请求方式。 一个完整的http请求是被分为request请求节点和response响应阶段的&…...

【MySQL精通之路】优化

1 优化概述 数据库性能取决于数据库级别的几个因素&#xff0c;如表、查询和配置设置。这些软件结构导致了硬件级别的CPU和I/O操作&#xff0c;您必须将其最小化并使其尽可能高效。 在研究数据库性能时&#xff0c;首先要学习软件方面的高级规则和指导原则&#xff0c;并使用挂…...

解读大模型应用的可观测性

一、引言 随着人工智能技术的飞速发展&#xff0c;大模型作为AI领域的重要分支&#xff0c;正日益成为科技竞争的新高地。大模型通过输入大量语料进行训练&#xff0c;赋予计算机拥有像人类一样的“思考”能力&#xff0c;使其能够理解文本、图片、语音等内容&#xff0c;并进…...

【网络】每天掌握一个Linux命令 - iftop

在Linux系统中&#xff0c;iftop是网络管理的得力助手&#xff0c;能实时监控网络流量、连接情况等&#xff0c;帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer &#xff08;1&#xff09;资源 论文&a…...