python学习——列表的相关操作

在 Python 中,列表(list)是一种非常灵活的数据结构,可以用来存储一系列的元素。以下是列表的一些常见操作:

文章目录

      • 创建列表
      • 访问元素
      • 修改元素
      • 列表切片
      • 添加元素
      • 删除元素
      • 列表推导式
      • 其他操作
      • pop
        • 基本用法
        • 指定索引
        • 使用场景
        • 示例
      • 列表的排序
        • `list.sort()` 方法
        • `sorted()` 函数
        • 自定义排序规则
      • 实操
        • .sort
        • sorted()

创建列表

my_list = [1, 2, 3, 4, 5]

访问元素

  • 通过索引访问:
first_element = my_list[0]  # 第一个元素
last_element = my_list[-1]  # 最后一个元素

修改元素

  • 直接通过索引修改:
my_list[0] = 10

列表切片

  • 获取列表的一部分:
sub_list = my_list[1:4]  # 包含索引1到3的元素,不包含索引4

添加元素

  • 在末尾添加一个元素:
my_list.append(6)
  • 在指定位置插入一个元素:
my_list.insert(1, 7)  # 在索引1的位置插入7
  • 扩展列表,将一个列表的所有元素添加到另一个列表末尾:
my_list.extend([8, 9, 10])

删除元素

  • 删除指定位置的元素:
del my_list[0]
  • 移除列表中第一个匹配的元素:
my_list.remove(3)
  • 弹出列表末尾的元素:
last_element = my_list.pop()

列表推导式

  • 快速生成列表:
squared = [x**2 for x in my_list]

其他操作

  • 获取列表长度:
length = len(my_list)
  • 列表排序:
my_list.sort()  # 默认升序
my_list.sort(reverse=True)  # 降序
  • 反转列表:
my_list.reverse()
  • 复制列表:
my_list_copy = my_list.copy()
  • 列表相加:
combined_list = my_list + [11, 12, 13]
  • 检查元素是否在列表中:
is_in_list = 5 in my_list
  • 计算元素在列表中出现的次数:
count = my_list.count(2)

这些操作涵盖了列表的大部分常用功能。列表在 Python 编程中非常常用,因此理解这些操作非常重要。

pop

在 Python 中,pop() 是列表(list)的一个内置方法,用于移除列表中的一个元素(默认是最后一个元素),并且返回该元素的值。
以下是 pop() 方法的一些关键点:

基本用法
  • 移除并返回列表中的最后一个元素:
my_list = [1, 2, 3, 4, 5]
last_element = my_list.pop()  # 返回 5,my_list 现在是 [1, 2, 3, 4]
指定索引
  • pop() 方法还可以接受一个整数参数,该参数指定要移除元素的索引:
second_element = my_list.pop(1)  # 返回 2,my_list 现在是 [1, 3, 4]

如果提供的索引超出了列表的范围,Python 将引发一个 IndexError

使用场景
  • 当你需要从列表中删除一个元素,并且还需要使用该元素时。
  • 当你需要实现一个基于列表的栈(stack)时,pop() 方法非常适合用来移除栈顶元素。
示例

下面是一个使用 pop() 方法的完整示例:

# 定义一个列表
my_list = ['a', 'b', 'c', 'd']
# 移除并返回最后一个元素
popped_element = my_list.pop()
print(f"移除的元素是:{popped_element}")  # 输出: 移除的元素是:d
print(f"列表现在是:{my_list}")  # 输出: 列表现在是:['a', 'b', 'c']
# 移除并返回指定索引的元素
popped_element = my_list.pop(1)
print(f"移除的元素是:{popped_element}")  # 输出: 移除的元素是:b
print(f"列表现在是:{my_list}")  # 输出: 列表现在是:['a', 'c']

在使用 pop() 方法时,需要注意,如果列表为空,即没有任何元素,调用 pop() 将会引发 IndexError。如果不想在空列表上调用 pop() 时引发错误,可以提供一个默认值作为 pop() 的第二个参数,这样在列表为空时将返回这个默认值。这个特性是在 Python 3.9 中引入的。例如:

empty_list = []
element = empty_list.pop(0, '默认值')  # 返回 '默认值'

列表的排序

在 Python 中,列表(list)提供了多种排序方法,可以按照不同的标准对列表中的元素进行排序。以下是一些常用的列表排序方法:

list.sort() 方法

sort() 方法是对列表本身进行排序,即它会改变原列表的顺序。

  • 基本排序:
my_list = [3, 1, 4, 1, 5, 9]
my_list.sort()
print(my_list)  # 输出: [1, 1, 3, 4, 5, 9]
  • 降序排序:
my_list.sort(reverse=True)
print(my_list)  # 输出: [9, 5, 4, 3, 1, 1]
  • 使用 key 参数进行自定义排序:
my_list = ['apple', 'banana', 'cherry', 'date']
my_list.sort(key=len)
print(my_list)  # 输出: ['date', 'apple', 'banana', 'cherry']
sorted() 函数

sorted() 函数返回一个新的列表,包含所有排序后的元素,原列表保持不变。

  • 基本排序:
my_list = [3, 1, 4, 1, 5, 9]
sorted_list = sorted(my_list)
print(sorted_list)  # 输出: [1, 1, 3, 4, 5, 9]
  • 降序排序:
sorted_list = sorted(my_list, reverse=True)
print(sorted_list)  # 输出: [9, 5, 4, 3, 1, 1]
  • 使用 key 参数进行自定义排序:
my_list = ['apple', 'banana', 'cherry', 'date']
sorted_list = sorted(my_list, key=len)
print(sorted_list)  # 输出: ['date', 'apple', 'banana', 'cherry']
自定义排序规则

如果需要更复杂的排序规则,可以传递一个自定义的函数给 key 参数:

# 假设有一个包含元组的列表,元组包含姓名和年龄
people = [('Alice', 30), ('Bob', 25), ('Cindy', 35)]
# 按年龄排序
people.sort(key=lambda person: person[1])
print(people)  # 输出: [('Bob', 25), ('Alice', 30), ('Cindy', 35)]

在使用排序方法时,需要注意以下几点:

  • sort() 方法没有返回值,它直接在原列表上进行排序。
  • sorted() 函数返回一个新的列表,原列表不受影响。
  • 排序默认是升序,可以通过设置 reverse=True 来实现降序排序。
  • key 参数接受一个函数,该函数用于指定排序的依据。
  • 对于不可比较的元素(如不同类型的元素混合在一起),直接排序可能会引发 TypeError

实操

lst = ['hello', 'world', 'python']
print('原列表:', lst, id(lst)) # id能输出内存地址
# 增加元素的操作
lst.append('sql')
print('增加元素之后:', lst, id(lst)) # 内存地址不变# 使用insert(index, x)在指定的index位置插入元素x
lst.insert(1, 100)
print(lst)# 列表元素的删除操作
lst.remove('world')
print(lst)# pop(index)根据索引将元素取出,然后再删除
print(lst.pop(1))
print(lst)# 清楚列表中所以的元素——clear()
# lst.clear() ctrl+?全部注释
# print(lst, id(lst))# 列表的反向输出
lst.reverse() # 不会产生新的列表,是再原列表的基础上进行的
print(lst)# 列表的拷贝,将产生一个新列表
new_lst = lst.copy()
print(lst, id(lst))
print(new_lst, id(new_lst)) # 新的id# 列表元素的修改操作
lst[1] = 'mysql'
print(lst)
.sort
lst = [4, 56, 3, 78, 40, 56, 89]
print('原列表:', lst)# 排序,默认升序
lst.sort()
print('升序:', lst) # 在原列表的基础上排序,不会产生新列表lst.sort(reverse=True)
print('降序:', lst)# 字母排序
lst2 = ['banana', 'apple', 'Cat']
print('原列表:', lst2)
# 升序排序,先排大写在小写ascll码
lst2.sort()
print('升序:',lst2)lst2.sort(reverse=True)
print('降序:', lst2)# 自定义排序规则,忽略大小写比较
lst2.sort(key=str.lower)
sorted()
lst = [4, 56, 3, 78, 40, 56, 89]
print('原列表:', lst)# 排序 产生新列表,不会对原列表进行排序操作
asc_lst = sorted(lst)
print('升序:', asc_lst)
print('原列表:', lst)# 降序
desc_lst = sorted(lst, reverse=True)
print('降序:', desc_lst)
print('原列表:', lst)# 字母排序
lst2 = ['banana', 'apple', 'Cat']
print('原列表:', lst2)# 忽略大小写进行排序
new_lst2 = sorted(lst2, key=str.lower)
print('原列表:', lst2)
print('排序后的列表:', new_lst2)

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

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

相关文章

【05】Selenium+Python 两种文件上传方式(AutoIt)

上传文件的两种方式 一、input标签上传文件 可以用send_keys方法直接上传文件 示例代码 input标签上传文件import time from selenium import webdriver from chromedriver_py import binary_path # this will get you the path variable from selenium.webdriver.common.by i…

深入浅出剖析典型文生图产品Midjourney

2022年7月,一个小团队推出了公测的 Midjourney,打破了 AIGC 领域的大厂垄断。作为一个精调生成模型,以聊天机器人方式部署在 Discord,它创作的《太空歌剧院》作品,甚至获得了美国「数字艺术/数码摄影」竞赛单元一等奖。 这一事件展示了 AI 在绘画领域惊人的创造力,让人们…

[MRCTF2020]Transform

查壳,拖入64位IDA LOBYTE8位就是一个字节,在此处无意义,因为我们输入的本来就是按字节输入的 设 a byte_414040,bdword_40F040,cbyte_40F0E0,输入的字符串为flag; 从题目里得到 加密代码 a[i] flag[b[i]]; a[i] ^ b[i]; c a 即c[i] a[i…

如何通过智能生成PPT,让演示文稿更高效、更精彩?

在快节奏的工作和生活中,我们总是追求更高效、更精准的解决方案。而在准备演示文稿时,PPT的制作往往成为许多人头疼的问题。如何让这项工作变得轻松且富有创意?答案或许就在于“AI生成PPT”这一智能工具的广泛应用。我们就来聊聊如何通过这些…

深入浅出UART驱动开发与调试:从基础调试到虚拟驱动实现

往期内容 本专栏往期内容:Uart子系统 UART串口硬件介绍深入理解TTY体系:设备节点与驱动程序框架详解Linux串口应用编程:从UART到GPS模块及字符设备驱动 解UART 子系统:Linux Kernel 4.9.88 中的核心结构体与设计详解IMX 平台UART驱…

【docker】安装数据库脚本

mysql5.7 Docker启动mysql7并挂载文件关闭大小写敏感,【docker】安装mysql-CSDN博客 docker run \--name mysql -d -p 3306:3306 \-v /docker/data/mysql/data:/var/lib/mysql \-v /docker/data/mysql/conf:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD密码 \-e TZ…

1 ISP一键下载

BOOT0BOOT1启动模式说明0X用户Flash用户闪存存储器,也就是Flash启动10系统存储器系统存储器启动,串口下载11SRAM启动SRAM启动,用于在SRAM中调试代码 闪存存储器 是STM32 的内置FLASH,一般使用JTAG或者SWD模式下载程序时,就是下载…

1、Three.js开端准备环境

准备工作 从 CDN 导入 1.安装 VSCode 2.安装 Node.js 3.查看Three.js最新版本 4.如何cdn引入: https://cdn.jsdelivr.net/npm/threev版本号/build/three.module.js 例如:https://cdn.jsdelivr.net/npm/threev0.170.0/build/three.module.js 我们需要…

Java 反射(Reflection)

Java 反射(Reflection) Java 反射(Reflection)是一个强大的特性,它允许程序在运行时查询、访问和修改类、接口、字段和方法的信息。反射提供了一种动态地操作类的能力,这在很多框架和库中被广泛使用&#…

[保姆式教程]使用labelimg2软件标注定向目标检测数据和格式转换

定向目标检测是一种在图像或视频中识别和定位对象的同时,还估计它们方向的技术。这种技术特别适用于处理有一定旋转或方向变化的对象,例如汽车、飞机或文本。定向目标检测器的输出是一组旋转的边界框,这些框精确地包围了图像中的对象&#xf…

深度学习模型:卷积神经网络(CNN)

一、前言 CNN 的发展历程可以追溯到 20 世纪 80 年代和 90 年代。受生物视觉系统的启发,研究人员开始探索如何构建专门用于处理图像数据的神经网络。早期的一些研究奠定了基础,例如 Fukushima 提出的 Neocognitron 模型。 随着时间的推移,到…

Git上传本地项目到远程仓库(gitee/github)

目录 序言一、创建git本地版本库二、连接远程仓库(以gitee为例)三、将项目提交到git(本地)版本库1.由工作区添加到暂存区2.由暂存区添加到版本库 四、将代码由本地仓库上传到 gitee远程仓库1.获取远程库与本地同步2.把当前分支 ma…

Java 基础面试 题(Java Basic Interview Questions)

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

人工智能与传统控制系统的融合发展

在这个科技快速迭代的时代,人工智能技术正以前所未有的速度改变着我们的生活。在控制系统领域,AI技术的引入为传统控制带来了新的发展机遇和挑战。然而,这并不意味着传统控制将被完全取代,相反,AI与传统控制的深度融合…

Linux服务器安装mongodb

因为项目需要做评论功能,领导要求使用mongodb,所以趁机多学习一下。 在服务器我们使用docker安装mongodb 1、拉取mongodb镜像 docker pull mongo (默认拉取最新的镜像) 如果你想指定版本可以这样 docker pull mongo:4.4&#…

Qml-TabBar类使用

Qml-TabBar类使用 TabBar的概述 TabBar继承于Container 由TabButton进行填充,可以与提供currentIndex属性的任何容器或布局控件一起使用,如StackLayout 或 SwipeView;contentHeight : real:TabBar的内容高度,用于计算标签栏的隐…

Vue3的通灵之术Teleport

前言 近期Vue3更新了一些新的内容&#xff0c;我都还没有一个一个仔细去看&#xff0c;但是还是有必要去解读一下新内容的。就先从Teleport 开始吧。 官方对 Teleport 的解释是&#xff1a;<Teleport> 是一个内置组件&#xff0c;它可以将一个组件内部的一部分模板“传…

uniapp echarts tooltip formation 不识别html

需求&#xff1a; echarts 的tooltip 的域名太长&#xff0c;导致超出屏幕 想要让他换行 思路一&#xff1a; 用formation自定义样式实现换行 但是&#xff1a; uniapp 生成微信小程序&#xff0c; echart种的tooltip 的formation 识别不了html &#xff0c;自定义样式没办…

idea2024加载flowable6.8.1.36遇到的问题-idea启动flowable问题flowable源码启动问题

代码下载地址&#xff1a; https://gitee.com/hanpenghu_admin_admin/flowable6.8.1.git 1.首先是通过顶层目录maven clean install 发现很多子模块并不会install本地mavenStore库&#xff0c;这导致了&#xff0c;一堆相互依赖的模块报错找不到&#xff0c;所以需要根据报错…

DICOM医学影像应用篇——伪彩色映射 在DICOM医学影像中的应用详解

目录 引言 伪彩色映射的概念 基本原理 查找表&#xff08;Look-Up Table, LUT&#xff09; 步骤 示例映射方案 实现伪彩色映射的C代码 代码详解 伪彩色处理效果展示 总结 扩展知识 LUT 的基本概念 LUT 在伪彩色映射中的应用 示例 引言 在医学影像处理中&#xff0c…