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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes集群调度

一.List-Watch 1.调度约束 Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 P…

Let‘s Encrypt 免费证书申请

填写邮箱&#xff0c;申请的域名 单域名&#xff1a;www.example.com 泛域名&#xff1a; *.example.com yum -y install certbot sudo certbot certonly --server https://acme-v02.api.letsencrypt.org/directory --manual --preferred-challenges dns --email xxexample…

Golang | Leetcode Golang题解之第102题二叉树的层序遍历

题目&#xff1a; 题解&#xff1a; func levelOrder(root *TreeNode) [][]int {ret : [][]int{}if root nil {return ret}q : []*TreeNode{root}for i : 0; len(q) > 0; i {ret append(ret, []int{})p : []*TreeNode{}for j : 0; j < len(q); j {node : q[j]ret[i] …

如何选择序列化协议:关键因素与场景分析

如何选择序列化协议&#xff1a;关键因素与场景分析 序列化协议的选择直接影响着系统的性能、可维护性及跨平台兼容性。以下是针对不同场景下&#xff0c;几种常见序列化协议的选择建议&#xff1a; 1. 公司间系统调用&#xff08;性能要求宽松&#xff09; SOAP (基于XML)&a…

vue深度选择器(:deep​)

处于 scoped 样式中的选择器如果想要做更“深度”的选择&#xff0c;也即&#xff1a;影响到子组件&#xff0c;可以使用 :deep() 这个伪类&#xff1a; <style lang"scss" scoped> .evaluation-situation-details :deep .cl-icon-arrow-right {display: none…

C语言学习笔记--C语言的实型数据

实型常量的表示方法&#xff08;掌握&#xff09; 实型也称为浮点型。实型常量也称为实数或者浮点数。在C语言中&#xff0c;实数只采用十进制。它有两种形式&#xff1a;十进制小数形式&#xff0c;指数形式。 1十进制数形式&#xff1a;由数码0~9和小数点组成。 例如&…

VSCODE中F12无法跳转,快捷键设置F12和insert混淆了

异常现象 最近用新电脑&#xff08;华为&#xff09;的时候&#xff0c;发现VSCODE经常按F12无法跳转&#xff0c;在快捷键设置当中&#xff0c;也是设置成功的&#xff1b; 此时重新去快捷键设置&#xff0c;会发现按 F12变为了Insert 解决方法 华为笔记本的Fx按键&#x…

淘宝扭蛋机小程序开发:探索无限惊喜的购物新体验

随着科技的不断进步&#xff0c;人们的生活方式也在发生翻天覆地的变化。在这个数字化、智能化的时代&#xff0c;淘宝扭蛋机小程序应运而生&#xff0c;为消费者带来了一种全新的购物体验。 淘宝扭蛋机小程序是一款集娱乐、互动、购物于一体的创新应用。它巧妙地将扭蛋机的乐…

FL Studio v21.2.3.4004中文破解版百度网盘下载

FL Studio v21.2.3.4004中文破解版是一款完整的软件音乐制作环境或数字音频工作站 (DAW)。代表了超过 18 年的创新发展&#xff0c;它在一个软件包中提供了您创作、编曲、录制、编辑、混音和掌握专业品质音乐所需的一切。FL Studio v21.2.3.4004中文破解版现在是世界上最受欢迎…

微信小程序中使用vantUI步骤

第一步&#xff0c;配置project.config.json 在setting中新增如下&#xff1a; "packNpmManually": true,"packNpmRelationList": [{"packageJsonPath": "./package.json","miniprogramNpmDistDir": "./"}], 第…

Java客户端SpringDataRedis(RedisTemplate)上手

文章目录 ⛄概述⛄快速入门❄️❄️导入依赖❄️❄️配置文件❄️❄️测试代码 ⛄数据化序列器⛄StringRedisTemplate⛄RedisTemplate的两种序列化实践方案总结 ⛄概述 SpringData是Spring中数据操作的模块&#xff0c;包含对各种数据库的集成&#xff0c;其中对Redis的集成模…

Vue3实战笔记(35)—集成炫酷的粒子特效

文章目录 前言一、vue3使用tsparticles二、使用步骤总结 前言 学习一个有趣炫酷的玩意开心一下。 tsparticles&#xff0c;可以方便的实现各种粒子特效。支持的语言框架也是相当的丰富. 官网&#xff1a;https://particles.js.org/ 一、vue3使用tsparticles 先来个vue3使用…

《智能水表计量平台技术架构:数字化管理助力节水环保》

随着科技的不断发展&#xff0c;智能水表计量平台作为一种新型的水资源管理工具&#xff0c;正在逐渐受到关注和应用。本文将深入探讨智能水表计量平台的技术架构设计与实现&#xff0c;以及如何通过数字化管理助力节水环保事业。 ### 1. 系统架构概述 智能水表计量平台的技术…

智能高效的IDE GoLand v2024.1全新发布 - 进一步升级AI辅助工具

GoLand 使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议&#xff0c;通过一步撤消快速安全重构&#xff0c;智能代码完成&#xff0c;死代码检测和文档提示帮助所有 Go 开发人员&#xff0c;从新手到经验丰富的专业人士&#xff0c;创建快速、高效、和可靠的…

Java入门基础学习笔记48——ArrayList的应用案例

掌握从容器中找出某些数据并成功删除的技巧&#xff1a; 需求&#xff1a; 现在加入购物车中存储了如下这些商品&#xff1a;Java入门&#xff0c;宁夏枸杞&#xff0c;黑枸杞&#xff0c;人字拖&#xff0c;特级枸杞&#xff0c;枸杞子。现在用户不想买枸杞了&#xff0c;选…

java多线程创建方式

1. 继承Thread类 这种方式是通过创建一个新的类继承自Thread类&#xff0c;并覆盖run()方法来创建线程。然后通过创建这个类的对象并调用其start()方法来启动线程。 public class MyThread extends Thread { public void run() { // 在这里定义线程的执行逻辑 …

Scala的简单认识

Scala编程基础 小白的Scala学习笔记 2024/5/21 上午某一时刻 文章目录 Scala编程基础spark是用Scala开发出来的Scala的优点 打开idea 搜索scala&#xff0c;安装 如果不小心点了取消&#xff0c;或者没有上图的提示&#xff0c;就在依赖里面添加 spark是用Scala开发出来的 类比…

VUE3 学习笔记(6):data数据的监听、表单绑定、操作DOM

data数据的监听&#xff08;侦听&#xff09; 对于data的值的监听&#xff0c;可以用watch中与data中的参数命名一致的值做为函数进行获取监听变动前后的值再做逻辑判断&#xff0c;如下图所示。 示例代码 <template><div><p :class"classDemo">{…

HCIP的学习(24)

第七章&#xff0c;VLAN—虚拟局域网 ​ 通过在交换机上部署VLAN技术&#xff0c;将一个规模较大的广播域在逻辑上划分成若干个不同的、规模较小的广播域。 ​ IEEE 802.1Q标准----虚拟桥接局域网标准----Dot1Q标准 标签协议标识符&#xff1a;0x8011&#xff08;代表数据帧是8…

仅1天录用!3天见刊!这本毕业“水刊”,全科都收,极速上线!

【欧亚科睿学术】 01 期刊简介 【期刊类别】计算机工程类EI 【期刊简介】最新EI期刊目录内源刊 【版面情况】仅10篇版面 【审稿周期】预计2-4周左右录用 【检索情况】EI&Scopus双检 【征稿领域】计算机工程领域相关稿件均可。 02 征稿领域 该期刊发表有关计算机在各…