萌新学 Python 之列表 list
list 列表:用中括号定义,元素写在中括号之间,元素之间使用逗号分隔
list1 = [] # 空列表
list2 = [1] # 元素为1个
list3 = ['a', 'b', 'c']
print(type(list1), type(list2), type(list3)) # <class 'list'> <class 'list'> <class 'list'>
1.列表属于可变数据类型,当元素修改后,内存地址不会改变
2.可变类型可以对列表进行增删改查
3.列表的元素类型不受限制,可以是任意类型
可以使用 list 内置函数创建列表
格式:list(可迭代对象)
对象为集合去重且无序
对象为字典返回键 key
# 对象为字符串
list4 = list('python')
print(list4) # ['p', 'y', 't', 'h', 'o', 'n']
# 对象为元组、列表、字典、集合
list5 = list((1, 2, 3))
print(list5) # [1, 2, 3]
list6 = list(['a', 'b'])
print(list6) # ['a', 'b']
list7 = list({'a', 'b', 'b'})
print(list7) # ['b', 'a'] 对象为集合去重且无序
list8 = list({'name': 'zhangsan', 'age': 18})
print(list8) # ['name', 'age'] 对象为字典返回键key
列表的索引和切片:
格式:列表[起始索引: 结束索引: 步长]
没有冒号是索引,有冒号是切片,切片范围左闭右开,左边包含右边不包含
步长默认 1,默认从下标 0 开始
# 0 1 2 3 4 5 6
l = [1, 3.14, 'python', (1, 2), [1, 2], {1, 2}, {'name': 'zhangsan', 'age': 18}]
# 列表的索引
print(l[1],l[-2]) # 3.14 {1, 2}
# 列表的切片
print(l[1:4]) # [3.14, 'python', (1, 2)]
print(l[::-2]) # [{'name': 'zhangsan', 'age': 18}, [1, 2], 'python', 1]
列表的修改:
通过索引值修改列表元素,修改后,内存地址 id 不变
# 0 1 2 3 4 5 6
l = [1, 3.14, 'python', (1, 2), [1, 2], {1, 2}, {'name': 'zhangsan', 'age': 18}]
print(id(l)) # 2307829475136
# 修改指定索引值的元素,id不变
l[3] = ('a', 'b')
print(id(l)) # 2307829475136
print(l) # [1, 3.14, 'python', ('a', 'b'), [1, 2], {1, 2}, {'name': 'zhangsan', 'age': 18}]
元组属于不可变的类型,特殊情况下,元组的元素为可变类型,修改元组元素 id 不变
tup = (1, 2, [1, 2])
print(id(tup)) # 2208925687424
# 修改元组中索引值为2的列表中第一个元素
tup[2][0] = 3
print(tup) # (1, 2, [3, 2])
print(id(tup)) # 2208925687424
列表增加元素(append、extend、insert):
1.在原列表中添加元素,元素可以是任意类型
格式:列表.append(元素)
lst = [] # 空列表
# 添加字符串
lst.append('123')
print(lst) # ['123']
# 添加字典
lst.append({'name': 'zhangsan', 'age': 18})
print(lst) # ['123', {'name': 'zhangsan', 'age': 18}]
2. extend 添加元素,将可迭代对象扩展到列表中
格式:列表.extend(可迭代对象)
字符串返回一个个元素
字典返回键 key
lst2 = [] # 空列表
# 添加字符串,将字符串拆分成一个个元素返回
lst2.extend('python')
print(lst2) # ['p', 'y', 't', 'h', 'o', 'n']
# 添加字典,返回键key
lst2.extend({'name': 'zhangsan', 'age': 18})
print(lst2) # ['p', 'y', 't', 'h', 'o', 'n', 'name', 'age']
3. insert 添加元素,指定索引位置插入元素,当索引值超出范围则添加到最后
格式:列表.insert(索引值, 元素对象)
lst3 = [] # 空列表
# 在下标0的位置插入元素
lst3.insert(0, 'abc')
print(lst3) # ['abc']
# 在下标10的位置插入元素,因为超出范围,所有添加到最后
lst3.insert(10, '123')
print(lst3) # ['abc', '123']
列表增加元素总结:
append 添加一个元素
extend 扩展多个元素
insert 指定位置插入一个元素
列表中元素的删除:remove、pop、clear
1. remove 从原列表中移除元素
格式:列表.remove(指定元素)
若移除不存在的元素则报错
l2 = ['good', 'good', 'study', 'day', 'day', 'up']
# 移除指定元素
l2.remove('good')
print(l2) # ['good', 'study', 'day', 'day', 'up']
2. pop 从原列表中删除指定索引值的元素
格式:列表.pop(索引值)
索引值超出则报错
没有指定索引值,默认删除最后一个元素
l2 = ['good', 'good', 'study', 'day', 'day', 'up']
l2.pop(1) # 删除下标1
print(l2) # ['good', 'study', 'day', 'day', 'up']
l2.pop()
print(l2) # ['good', 'study', 'day', 'day']
3. clear 清空列表元素,返回空列表
格式:列表.clear()
l2 = ['good', 'good', 'study', 'day', 'day', 'up']
l2.clear() # 列表清空
print(l2) # [] 空列表
列表中删除元素总结:
remove 移除指定元素
pop 删除指定索引的元素,默认删除最后一个
clear 清空列表元素
列表元素的查询:
通过 列表[索引值] 返回元素
sort 对原列表元素进行排序,默认升序
格式:列表.sort(key = 自定义函数, reverse = False)
列表的元素必须是相同的类型,否则无法排序,程序将报错
当 reverse = False 时,升序排序
当 reverse = True 时,降序排序
# 升序排序
list9 = [5, 1, 9, 6]
list9.sort()
print(list9) # [1, 5, 6, 9]
# 降序排序
list9 = [5, 1, 9, 6]
list9.sort(reverse=True)
print(list9) # [9, 6, 5, 1]
对元组列表排序,按元组中第二个元素排序
lambda 参数:表达式
将表达式的结果返回,参数是传给表达式
# 对元组列表排序,按元组中第二个元素排序
list10 = [('张三', 18), ('李四', 20), ('王五', 15)]
# lambda 参数:表达式 将表达式的结果返回,参数是传给表达式
list10.sort(key=lambda x:x[1])
print(list10) # [('王五', 15), ('张三', 18), ('李四', 20)]
key=lambda x 是将元组命名为 x,即 ('张三', 18) 是 x
lambda x:x[1] 是元组的下标 1 也就是第二个元素 18
就可以实现按元组中第二个元素排序
默认是会按元组中第一个元素排序
reverse 列表转置,将列表进行反转
list11 = [1, 2, 3, 4]
list11.reverse()
print(list11) # [4, 3, 2, 1]
copy 列表的拷贝:不可变的元素完全独立,可变的元素共享使用
l3 = [1, 2, [3, 4, 5]]
l4 = l3.copy()
print(id(l3), l3) # 2541099811008 [1, 2, [3, 4, 5]]
print(id(l4), l4) # 2541099811072 [1, 2, [3, 4, 5]]l3[2].append(6) # 增加可变类型,元素共享
print(id(l3), l3) # 2541099811008 [1, 2, [3, 4, 5, 6]]
print(id(l4), l4) # 2541099811072 [1, 2, [3, 4, 5, 6]]l3.append(7) # 不可变的元素完全独立
print(id(l3), l3) # 2541099811008 [1, 2, [3, 4, 5, 6], 7]
print(id(l4), l4) # 2541099811072 [1, 2, [3, 4, 5, 6]]
其他函数比如 len、max、min、del 与元组类似
相关文章:
萌新学 Python 之列表 list
list 列表:用中括号定义,元素写在中括号之间,元素之间使用逗号分隔 list1 [] # 空列表 list2 [1] # 元素为1个 list3 [a, b, c] print(type(list1), type(list2), type(list3)) # <class list> <class list> <class …...
250213-RHEL8.8-外接SSD固态硬盘
It seems that the exfat-utils package is still unavailable, even after enabling the RPM Fusion repository. This could happen if the repository metadata hasn’t been updated or if the package isn’t directly available in the RPM Fusion repository for RHEL 8…...
游戏引擎学习第99天
仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板:制作一些光场(Light Field) 当前的目标是为游戏添加光照系统,并已完成了法线映射(normal maps)的管道,但还没有创建可以供这些正常映射采样的光场。为了继续推进&…...
Linux初始化 配置yum源
问题出现:(报错) 1 切换路径 2 备份需要操作的文件夹 3 更改 CentOS 的 YUM 仓库配置文件,以便使用阿里云的镜像源。 4 清除旧的yum缓存 5 关闭防火墙 6 生成新的yum缓存 7 更新系统软件包 8 安装软件包...
【笛卡尔树】
笛卡尔树 笛卡尔树定义构建性质 习题P6453 [COCI 2008/2009 #4] PERIODNICF1913D Array CollapseP4755 Beautiful Pair[ARC186B] Typical Permutation Descriptor 笛卡尔树 定义 笛卡尔树是一种二叉树,每一个节点由一个键值二元组 ( k , w ) (k,w) (k,w) 构成。要…...
Ubuntu启动geteck/jetlinks实战:Docker启动(无法登录)
参考: JetLinks 物联网基础平台 安装Docker Ubuntu下载安装Docker-Desktop-CSDN博客 sudo apt install -y docker-compose 下载源码 git clone https://github.com/jetlinks/jetlinks-community.git cd jetlinks-community 启动 cd docker/run-all sudo dock…...
Java String 类深度解析:内存模型、常量池与核心机制
目录 一、String初识 1. 字符串字面量的处理流程 (1) 编译阶段 (2) 类加载阶段 (3) 运行时阶段 2. 示例验证 示例 1:字面量直接赋值 示例 2:使用 new 创建字符串 示例 3:显式调用 intern() 注意点1: ⑴. String s1 &q…...
不到一个月,SQLite 3.49.0来了
距离 SQLite 3.48.0 发布不到一个月,SQLite 开发团队于 2025 年 2 月 6 日发布了 SQLite 3.49.0 版本。这更新速度的确让人感动,那么这个版本又有哪些更新呢? 查询优化器 新版本改进了自动索引(query-time index)优化…...
探索顶级汽车软件解决方案:驱动行业变革的关键力量
在本文中,将一同探索当今塑造汽车行业的最具影响力的软件解决方案。从设计到制造,软件正彻底改变车辆的制造与维护方式。让我们深入了解这个充满活力领域中的关键技术。 设计软件:创新车型的孕育摇篮 车辆设计软件对于创造创新型汽车模型至…...
ThreadPoolExecutor 详解
一、ThreadPoolExecutor 核心参数 构造函数如下: public ThreadPoolExecutor(int corePoolSize, // 核心线程数int maximumPoolSize, // 最大线程数long keepAliveTime, // 非核心线程空闲存活时间TimeUnit unit, // 存活时间单位BlockingQueue…...
TikTok走红全球:中国短视频平台以全新姿态登陆海外市场
在数字化浪潮中,短视频已经成为全球年轻人表达自我、分享生活的重要方式。TikTok,这个起源于中国的短视频平台,以其独特的魅力和创新的功能在全球范围内迅速走红。本文将探讨TikTok如何以全新姿态登陆海外市场,并分析其成功的关键…...
Qt的QTableWidget样式设置
在 Qt 中,可以通过样式表(QSS)为 QTableWidget 设置各种样式。以下是一些常见的样式设置示例: 1. 基本样式设置 tableWidget->setStyleSheet(// 表格整体样式"QTableWidget {"" background-color: #F0F0F0;…...
计算机毕业设计Python旅游评论情感分析 NLP情感分析 LDA主题分析 bayes分类 旅游爬虫 旅游景点评论爬虫 机器学习 深度学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
渗透测试扫描器全解析:分类与介绍
目录 前言 操作系统扫描器:系统漏洞的 “侦察兵” 特点 代表性工具 网站 Web 漏洞扫描器:Web 应用的 “安全卫士” 特点 代表性工具 手机漏洞扫描器:移动设备的 “安全护盾” 特点 代表性工具 前言 在数字技术飞速发展的当下&…...
day9手机创意软件
趣味类 in:记录趣味生活(通用) 魔漫相机:真人变漫画(通用) 活照片:让照片活过来(通用) 画中画相机:与众不同的艺术 年龄检测仪:比一比谁更年轻…...
A001基于SpringBoot实现的小区物业管理系统
系统介绍 基于SpringBoot实现的小区物业管理系统是为物业管理打造的一款在线管理平台,它可以实时完成信息处理,对小区信息、住户等进行在线管理,使其系统化和规范化。 系统功能说明 1、系统共有物业、业主角色,物业拥有系统最高…...
【Uniapp】关于实现下拉刷新的三种方式
在小程序、h5等地方中,常常会用到下拉刷新这个功能,今天来讲解实现这个功能的三种方式:全局下拉刷新,组件局部下拉刷新,嵌套组件下拉刷新。 全局下拉刷新 这个方式简单,性能佳,最推荐…...
常见的 Web 攻击方式有哪些,如何防御?
一、XSS攻击(跨站脚本攻击) 攻击原理:恶意脚本通过用户输入注入页面,分为存储型(数据库持久化)、反射型(URL参数注入)、DOM型(客户端脚本修改) 防御方案&am…...
深入理解DeepSeek与企业实践(二):32B多卡推理的原理、硬件散热与性能实测
前言 在《深入理解 DeepSeek 与企业实践(一):蒸馏、部署与评测》文章中,我们详细介绍了深度模型的蒸馏、量化技术,以及 7B 模型的部署基础,通常单张 GPU 显存即可满足7B模型完整参数的运行需求。然而&…...
数据结构-链式二叉树
文章目录 一、链式二叉树1.1 链式二叉树的创建1.2 根、左子树、右子树1.3 二叉树的前中后序遍历1.3.1前(先)序遍历1.3.2中序遍历1.3.3后序遍历 1.4 二叉树的节点个数1.5 二叉树的叶子结点个数1.6 第K层节点个数1.7 二叉树的高度1.8 查找指定的值(val)1.9 二叉树的销毁 二、层序…...
【云安全】云原生- K8S etcd 未授权访问
什么是etcd? etcd 是一个开源的分布式键值存储系统,主要用于存储和管理配置信息、状态数据以及服务发现信息。它采用 Raft 共识算法,确保数据的一致性和高可用性,能够在多个节点上运行,保证在部分节点故障时仍能继续提…...
AI时代的前端开发:对抗压力的利器
在飞速发展的AI时代,前端开发工程师们面临着前所未有的挑战。项目周期不断缩短,需求变化日新月异,交付压力更是与日俱增,这使得开发人员承受着巨大的压力。如何提升对抗压能力,成为摆在每一位前端工程师面前的重要课题…...
在npm上传属于自己的包
前言 最近在整理代码,上传到npm方便使用,所以学习了如何在npm发布一个包,整理写成一篇文章和大家一起交流。 修改记录 更新内容更新时间文章第一版25.2.10新增“使用包”,“删除包的测试”25.2.12 1、注册npm账号 npm | Home 2…...
[Spring] Spring常见面试题
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
适配器模式详解(Java)
一、引言 1.1 定义与类型 适配器模式是一种结构型设计模式,主要目的是将一个类的接口转换为客户期望的另一个接口。这种模式使得原本因为接口不匹配而不能一起工作的类可以一起工作,从而提高了类的复用性。适配器模式分为类适配器和对象适配器两种类型。类适配器使用继承关…...
22.4、Web应用漏洞分析与防护
目录 Web应用安全概述DWASP Top 10Web应用漏洞防护 - 跨站脚本攻击XSSWeb应用漏洞防护 - SQL注入Web应用漏洞防护 - 文件上传漏洞Web应用漏洞防护 - 跨站脚本攻击XSS Web应用安全概述 技术安全漏洞,主要是因为技术处理不当而产生的安全隐患,比如SQL注入…...
【Pandas】pandas Series drop
Pandas2.2 Series Computations descriptive stats 方法描述Series.align(other[, join, axis, level, …])用于将两个 Series 对齐,使其具有相同的索引Series.case_when(caselist)用于根据条件列表对 Series 中的元素进行条件判断并返回相应的值Series.drop([lab…...
SpringBoot实战:高效获取视频资源
文章目录 前言技术实现SpringBoot项目构建产品选取配置数据采集 号外号外 前言 在短视频行业高速发展的背景下,海量内容数据日益增长,每天都有新的视频、评论、点赞、分享等数据涌现。如何高效、精准地获取并处理这些庞大的数据,已成为各大平…...
mysql大数据量分页查询
一、什么是MySQL大数据量分页查? MySQL大数据量分页查是指在使用MySQL数据库时,将大量数据分成多个较小的部分进行显示,以提高查询效率和用户体验。分页查询通常用于网页或应用程序中,以便用户能够逐步浏览结果集。 二、为什…...
迅为RK3568开发板篇OpenHarmony实操HDF驱动配置LED-LED测试
将编译好的镜像全部进行烧写,镜像在源码根目录 out/rk3568/packages/phone/images/目录下。 烧写完成之后,在调试串口查看打印日志,如下图所示: 然后打开 hdc 工具,运行测试程序,输入“led_test 1”&…...
