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] (列表按升序排列)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JS-09-es6常用知识1

目录 1 模板字符串 1.1 模板字符串基本用法 1.2 模板字符串解决了一些痛点 2 解构赋值 2.1 对象的解构赋值 2.2 函数参数的解构赋值 2.3 补写&#xff1a;属性的简写 3 rest参数 3.1 arguments 3.2 rest参数 3.3 补充&#xff1a;判断数据类型 4 箭头函数 4.1 …

传输中的串扰(八)

串扰指的是有害信号从一个线网传递到相邻线网上。通常把噪声源所在的线网称为动态线或攻击线网&#xff0c;而把有噪声形成的线网称为静态线或受害线网。 静态线上的噪声电压的表现与信号电压完全一样。一旦在静态线上产生噪声电压&#xff0c;它们就会传播并在阻抗突变处出现反…

服务器数据恢复—服务器raid常见故障表现原因解决方案

RAID&#xff08;磁盘阵列&#xff09;是一种将多块物理硬盘整合成一个虚拟存储的技术&#xff0c;raid模块相当于一个存储管理的中间层&#xff0c;上层接收并执行操作系统及文件系统的数据读写指令&#xff0c;下层管理数据在各个物理硬盘上的存储及读写。相对于单独的物理硬…

外卖点餐系统 springboot+vue+element-ui

免费获取方式↓↓↓ 项目介绍038&#xff1a; http://localhost:8080/ 账号&#xff1a;weiguanke 123 系统登陆后展示 用户可视界面 – 登录页面 – 首页&#xff1a; – 店铺查找页面&#xff1a; 店铺查找 – 店铺页面 店铺管理者可视页面 – 店铺页面 店铺管理员…

Redis之持久化、集群

1. Redis持久化 Redis为什么需要持久化?因为Redis的数据我们都知道是存放在内存中的&#xff0c;那么每次关闭或者机器断电&#xff0c;我们的数据旧丢失了。 因此&#xff0c;Redis如果想要被别人使用&#xff0c;这个问题就需要解决&#xff0c;怎么解决呢?就是说我们的数…

Windows通过cmd运行快速启动应用

Windows如何通过cmd运行快速启动应用&#xff1f; 在Windows操作系统中&#xff0c;可以通过配置环境变量的方式将文件的路径配置到环境变量的path中&#xff0c;配置完成后可以在cmd中输入对应的应用名称即可启动应用&#xff0c;具体操作如下&#xff1a; 1. 添加应用程序路径…

力扣62. 不同路径

一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。问总共有多少条不同的路径&#xff1f; 示例 1&…

FJSP:蛇鹫优化算法(SBOA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

详细介绍 FJSP&#xff1a;蛇鹫优化算法&#xff08;Secretary bird optimization algorithm&#xff0c;SBOA&#xff09;求解柔性作业车间调度问题&#xff08;FJSP&#xff09;&#xff0c;提供MATLAB代码-CSDN博客 完整MATLAB代码 FJSP&#xff1a;蛇鹫优化算法&#xff…

spoon工具的常用基础操作

一些常用转换工具 1、emp表输入->excel表输出 emp表输入&#xff0c;可以进行预览查看数据有没有过来excel表输出 成功执行后&#xff0c;可以到保存的excel位置进行查看。 2、excel输入->表输出 运行转换后可以在oracle进行查看是否有成功创建这个表 3、对部门最高…

Java 22的FFM API,比起Java 21的虚拟线程

哪个对Java未来的发展影响更大&#xff1f;两个 Java 版本中的重要特性&#xff1a;Java 21 的虚拟线程和 Java 22 的 FFM API。我这里有一套编程入门教程&#xff0c;不仅包含了详细的视频讲解&#xff0c;项目实战。如果你渴望学习编程&#xff0c;不妨点个关注&#xff0c;给…

原生APP开发和Flutter开发的比较

原生APP开发和Flutter开发各有优缺点&#xff0c;适用于不同的场景和需求。下面是两者的详细比较&#xff0c;从开发语言、性能、开发效率、维护和更新、社区和支持等多个方面进行分析。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。…

【康耐视国产案例】智能AI相机机器视觉精准快速实现包裹标签的智能粘贴

康耐视推出的3D-A1000是专业的、匹配物流行业各类分拣机及包裹检测应用的全功能视觉检测系统&#xff0c;其能够准确检测分拣机上是否有包裹、包裹是否超出边界、空车检测、是否有遗留物品等。由于搭载了专利的三维结构光技术&#xff0c;产品具有更强大的创新性以满足持续更新…

综合交易模型--雪球跟单参数说明支持qmt,同花顺

经过测试&#xff0c;目前完成了这个策略。支持多策略&#xff0c;支持全市场&#xff0c;包括股票&#xff0c;etf,可转债 全部的参数 { "雪球跟单":"跟单原理", "原理":"比重变大默认买入&#xff0c;变小默认卖出&#xff0c;持股…

fintuning chatglm3

chatglm3介绍 ChatGLM3-6B 是 ChatGLM 系列最新一代的开源模型&#xff0c;在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上&#xff0c;ChatGLM3-6B 引入了如下特性&#xff1a; 更强大的基础模型&#xff1a; ChatGLM3-6B 的基础模型 ChatGLM3-6B-Base 采用…

【uni-app】Pinia 持久化

小程序端 Pinia 持久化 说明&#xff1a;Pinia 用法与 Vue3 项目完全一致&#xff0c;uni-app 项目仅需解决持久化插件兼容性问题。 持久化存储插件 安装持久化存储插件&#xff1a; pinia-plugin-persistedstate pnpm i pinia-plugin-persistedstate插件默认使用 localStor…

Anaconda创建python环境默认C盘,如何修改路径

文章目录 前言解决方案1.找到Anaconda的根目录2. 找到根目录文件夹&#xff0c;右键-属性-安全 测试-重新创建新的python环境 前言 使用 Anaconda创建python环境&#xff0c;默认在C盘。 如何修改到别的路径呢&#xff1f; base环境 是安装 Anaconda是安装的默认环境&#x…

西瓜播放器xgplayer设置自动播放踩坑

上图是官网&#xff08;西瓜视频播放器官方中文文档&#xff09;的介绍&#xff0c;相信大家都是按照官网配置去做的&#xff0c;但是并没有什么用&#xff0c;插件很好用&#xff0c;但是属性不全&#xff0c;真的很悔恨&#xff0c;找遍 api 都没有找到自动播放的属性&#x…

LLM——深入探索 ChatGPT在代码解释方面的应用研究

1.概述 OpenAI在自然语言处理&#xff08;NLP&#xff09;的征途上取得了令人瞩目的进展&#xff0c;这一切得益于大型语言模型&#xff08;LLM&#xff09;的诞生与成长。这些先进的模型不仅是技术创新的典范&#xff0c;更是驱动着如GitHub Copilot编程助手和Bing搜索引擎等广…

linux磁盘阵列

磁盘阵列 可以用不同的磁盘&#xff0c;组成一个逻辑上的硬盘。高可用&#xff0c;冗余 lvm 扩容 raid 高可用 磁盘的组成方式不同&#xff0c;也就是不同的raid级别 raid级别 使用硬盘数量 磁盘利用率 冗余能力 读写性能 raid0 N 100% 0 读写最好 raid1 N(偶数) 50% 坏…

电商推荐系统+电影推荐系统【虚拟机镜像分享】

电商推荐系统电影推荐系统【虚拟机镜像分享】 所有组件部署好的镜像下载&#xff08;在下面&#xff09;&#xff0c;仅供参考学习。&#xff08;百度网盘&#xff0c;阿里云盘…&#xff09; 博主通过学习尚硅谷电商推荐电影推荐项目&#xff0c;将部署好的虚拟机打包成ovf文…