【Python】列表

【Python】列表

文章目录


前言

本文主要介绍Python中的数据类型——列表的相关概念。


一、列表

列表(list)是一种有序和可更改的集合,列表中允许存在重复元素,允许存在不同类型的元素。

二、创建列表

1. 创建空列表

在python中[]表示一个空列表

a =[]print(type(a))# <class 'list'>print(a)# []

使用list()函数也可以创建一个空列表

a =list()print(type(a))# <class 'list'>print(a)# []

2. 创建非空列表

创建列表时可以设置初始值

a =[1,3,2.2,'Jinger']print(type(a))# <class 'list'>print(a)# [1, 3, 2.2, 'Jinger']

三、操作列表

1. 新增列表元素

1.1 append方法

append方法可以在列表末尾增加一个元素

a =[1,3.0,2.2] a.append('Jinger')print(type(a))# <class 'list'>print(a)# [1, 3.0, 2.2, 'Jinger']

1.2 insert方法

insert方法可以在任意指定下标(支持负索引)插入一个元素

a =[1,3.0,2.2] a.insert(1,'Jinger')print(type(a))# <class 'list'>print(a)# [1, 'Jinger', 3.0, 2.2] a.insert(-1,'Hello')print(type(a))# <class 'list'>print(a)# [1, 'Jinger', 3.0, 'Hello', 2.2]
负索引:
我们常说的下标都是从列表第一个元素开始往后,从0开始计数的,而负索引则是从列表最后一个元素开始往前,依次为-1, -2, -3...
因此想要访问列表的最后一个元素,直接访问下标为-1的元素即可。

注意
如果指定下标超出列表中的最大下标,则插入到列表末尾(如果为负索引,则插入列表首部)

a =[1,3.0,2.2] a.insert(100,'Jinger')print(type(a))# <class 'list'>print(a)# [1, 3.0, 2.2, 'Jinger'] a.insert(-100,'Hello')print(type(a))# <class 'list'>print(a)# ['Hello', 1, 3.0, 2.2, 'Jinger']

2. 删除列表元素

2.1 pop方法

pop方法可以删除列表的末尾元素,或者删除指定下标的元素

a =[1,3.0,2.2] a.pop()print(type(a))# <class 'list'>print(a)# [1, 3.0] a.pop(1)print(type(a))# <class 'list'>print(a)# [1]

2.2 remove方法

remove方法可以删除列表中指定的元素

a =[1,3.0,2.2,3.0] a.remove(3.0)print(type(a))# <class 'list'>print(a)# [1, 2.2, 3.0]

注意
当列表中存在重复元素时,使用remove方法仅能删除第一次出现的元素

3. 查找列表元素

3.1 in/not in操作符

in/not in操作符可以判断某个元素是否在列表中,如果存在则返回True,不存在则返回False

a =[1,3.0,2.2,3.0]print(3in a)# Trueprint(3notin a)# Falseprint(type(a))# <class 'list'>print(a)# [1, 3.0, 2.2, 3.0]

3.2 index方法

index方法可以查询指定元素在列表中的下标

a =[1,3.0,2.2,3.0]print(a.index(2.2))# 2

3.3 下标访问列表元素

通过[]下标访问操作符可以获取到列表中对应下标的元素(支持负索引)

a =[1,3.0,2.2,3.0]print(a[3])# 3.0

4. 修改列表元素

通过[]下标访问操作符还可以修改列表中对应下标的元素的值

a =[1,3.0,2.2,3.0] a[3]=4print(a)# [1, 3.0, 2.2, 4]

5. 遍历列表元素

5.1 for循环遍历列表

Python中的for循环可以直接遍历列表中的元素

a =[1,3.0,2.2,3.0]foriterin a:print(iter)

但是对iter进行更改时,列表中的元素不会受到影响(可以理解为是将列表中对应元素的值赋值给了变量iter,所以修改iter不会影响到列表中的元素)

a =[1,3.0,2.2,3.0]foriterin a:iter+=1print(iter)# 2 4.0 3.2 4.0print(a)# [1, 3.0, 2.2, 3.0]

如果想要通过for循环来修改列表中的元素,可以使用for循环遍历列表元素下标的方式,遍历列表中的元素

a =[1,3.0,2.2,3.0] n =len(a)for i inrange(n): a[i]+=1print(a[i])# 2 4.0 3.2 4.0print(a)# [2, 4.0, 3.2, 4.0]

5.2 while循环遍历列表

while循环也可以通过变量列表元素下标的方式来访问列表元素

a =[1,3.0,2.2,3.0] n =len(a) i =0while i inrange(n):# 或者使用 while i < n a[i]+=1print(a[i])# 2 4.0 3.2 4.0 i +=1print(a)# [2, 4.0, 3.2, 4.0]

6. 子列表提取

6.1 [start:stop]

[start:stop]的方式可以从列表中提取出:从start起始下标开始,到stop结束下标结束的一组元素(左闭右开)

a =[1,3.0,2.2,3.0] b = a[1:2] c = a[0:2] d = a[0:3]print(a)# [1, 3.0, 2.2, 3.0]print(b)# [3.0]print(c)# [1, 3.0]print(d)# [1, 3.0, 2.2]

6.2 切片时忽略边界

提取子列表的过程也称作切片的过程,以[start:stop]的方式进行切片时可以忽略起始下标和结束下标

  • 如果以[start:]的方式进行切片,则子列表的元素包括起始下标的元素及其后续所有元素;
  • 如果以[:stop]的方式进行切片,则子列表的元素包括结束下标之前的所有元素,不包括结束下标的元素
  • 如果以[:]的方式进行切片,则子列表的元素包括原列表的所有元素
a =[1,3.0,2.2,3.0] b = a[1:2] c = a[1:] d = a[:2] e = a[:]print(a)# [1, 3.0, 2.2, 3.0]print(b)# [3.0]print(c)# [3.0, 2.2, 3.0]print(d)# [1, 3.0]print(e)# [1, 3.0, 2.2, 3.0]

注意
切片时所用下标支持负索引

a =[1,3.0,2.2,3.0] b = a[-3:-1]print(a)# [1, 3.0, 2.2, 3.0]print(b)# [3.0, 2.2]

6.3 切片时指定步长

[start:stop:step]的方式切片可以指定step步长(每访问一个元素后下标自增几步),例如

a =[1,3.0,2.2,3.0] b = a[0:3:2]print(a)# [1, 3.0, 2.2, 3.0]print(b)# [1, 2.2]

注意
指定的步长可以为负数,表示从后往前提取元素
当步长为负数时,会从右向左遍历(反向切片),start默认为最后一个元素,stop默认为第一个元素(不包括),只有start大于stop才能切到元素,例如

a =[1,3.1,2.2,3.0] b = a[::-1] c = a[3:0:-1] d = a[-1::-2]print(a)# [1, 3.1, 2.2, 3.0]print(b)# [3.0, 2.2, 3.1, 1]print(c)# [3.0, 2.2, 3.1]print(d)# [3.0, 3.1]

6.4 切片时下标允许越界

如果在切片时,指定的下标超出了有效范围,运行程序不会抛异常,而是会尽可能将符合要求的元素提取出来,例如:

a =[1,3.0,2.2,3.0] b = a[2:100:1] c = a[100:0:-1]print(a)# [1, 3.0, 2.2, 3.0]print(b)# [2.2, 3.0]print(c)# [3.0, 2.2, 3.0]

7. 拼接列表

7.1 使用+拼接两个列表

使用+操作符可以将两个列表拼接起来生成一个新列表,该操作不会影响两个原有列表

a =[1,3.1,2.2,3.0] b =[2.2,'Jinger'] c = a + b print(a)# [1, 3.1, 2.2, 3.0]print(b)# [2.2, 'Jinger']print(type(c))# <class 'list'>print(c)# [1, 3.1, 2.2, 3.0, 2.2, 'Jinger']

7.2 使用+=操作符

使用+=操作符可以将一个列表拼接到另一个列表后面

a =[1,3.1,2.2,3.0] b =[2.2,'Jinger'] b += a print(a)# [1, 3.1, 2.2, 3.0]print(b)# [2.2, 'Jinger', 1, 3.1, 2.2, 3.0]

7.3 extend方法

使用extend方法也可以将一个列表拼接到另一个列表后面

a =[1,3.1,2.2,3.0] b =[2.2,'Jinger'] b.extend(a)print(a)# [1, 3.1, 2.2, 3.0]print(b)# [2.2, 'Jinger', 1, 3.1, 2.2, 3.0]
+=操作符和extend方法都可以将一个列表拼接到另一个列表后面,但是extend方法更高效
因为,b += a等价于b = b + a,拼接过程中会先构造出一个临时列表作为拼接后的列表,再将b原本的列表释放,然后将这个临时列表赋值给b
extend方法则是直接将a列表的元素拼接到b列表后面,避免了不必要的释放操作

四、列表常用接口

Python是一种面向对象的语言,因此创建出来的列表本质是一个对象,这些操作列表的方法都是列表的成员方法。列表的常用接口如下:

1. 列表操作

列表操作方式
子列表提取this_list[start:stop:step]
列表检查innot in
列表拼接++=
列表长度len()函数

2. 列表的成员函数

成员函数功能
copy复制列表
clear清空列表
append在列表末尾添加一个元素
insert在列表指定下标插入一个元素
extend将列表元素(或任意可迭代对象的元素)添加到当前列表的末尾
pop删除列表中指定下标的元素(默认为末尾元素)
remove删除列表中指定元素(首次出现)
index返回列表中指定元素的下标(首次出现)
count返回列表中指定元素的个数
reverse颠倒列表中元素的顺序
sort对列表中元素进行排序

总结

以上就是今天要讲的内容,本文介绍了Python数据类型——列表的相关概念。本文作者目前也是正在学习Python相关的知识,如果文章中的内容有错误或者不严谨的部分,欢迎大家在评论区指出,也欢迎大家在评论区提问、交流。
最后,如果本篇文章对你有所启发的话,希望可以多多支持作者,谢谢大家!

Read more

Python异步编程基石:深入理解asyncio核心原理与实战

Python异步编程基石:深入理解asyncio核心原理与实战

摘要 本文深入剖析Python异步编程核心库asyncio的工作原理,从事件循环、协程、Future到Task的完整技术栈。通过真实性能对比数据、企业级案例和5个架构流程图,全面解析async/await底层机制。涵盖异步编程最佳实践、性能优化技巧和故障排查方案,帮助开发者掌握高并发程序设计精髓,提升I/O密集型应用性能数倍。 1 异步编程:为什么它是Python高性能的关键 在我13年的Python开发经验中,异步编程是性能优化的分水岭。记得曾经处理一个需要调用10个外部API的任务,同步版本需要20多秒,而改用异步后仅需2秒——这种10倍性能提升让我彻底认识到异步编程的价值。 1.1 同步 vs 异步:直观对比 想象你在餐厅点餐的场景: * 同步:点完第一个菜后站着等厨师做完,再点第二个菜,效率极低 * 异步:点完所有菜后找座位等待,厨师并行制作,服务员送餐时通知你 这就是异步编程的核心优势:避免不必要的等待,充分利用等待时间执行其他任务。 import time import asyncio # 同步版本:顺序执行,总耗时=各任务耗时之和 def

By Ne0inhk
Python 小工具实战:图片水印批量添加工具

Python 小工具实战:图片水印批量添加工具

Python 小工具实战:图片水印批量添加工具 Python 小工具实战:图片水印批量添加工具,本文详细介绍了使用 Python开发 给图片加水印的工具,该工具基于 Pillow 和 tkinter 库构建,可解决单图处理耗时、专业软件操作复杂的问题。工具支持单图与批量处理,用户能自定义水印文字、字体大小、透明度及颜色,还可选择 9 个常用水印位置或设置行列重复分布。新增的全屏水印模式可通过调整旋转角度与间距,生成铺满图片的版权保护水印,且界面采用卡片式布局,搭配浅灰背景与蓝色按钮,简洁美观,底部状态栏实时显示操作进度。文中提供完整可运行代码,并给出参数校验、字体兼容、常见报错解决等实用内容,新手按步骤即可上手,或者直接运行使用。 前言     Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是

By Ne0inhk
Python 轻量化环境管理利器 UV 入门与 Windows 下安装实战

Python 轻量化环境管理利器 UV 入门与 Windows 下安装实战

文章目录 * 一、UV是什么?解决什么问题? * 1.1 传统Python环境管理的三大痛点 * 痛点1:多工具碎片化操作,效率低下 * 痛点2:依赖冲突与环境隔离难题 * 痛点3:工具学习成本高,协作壁垒明显 * 1.2 UV如何解决?核心优势解析 * 优势1:一体化设计,命令行极简主义 * 优势2:智能环境管理,冲突预警与自动隔离 * 优势3:轻量化与高性能,适配现代开发节奏 * 优势4:渐进式迁移,兼容现有生态 * 1.3 目标用户与典型场景 * 二、Windows下UV安装实战 * 2.1 前置步骤:安装Visual C++ 2015-2022运行时 * 2.1.1 为什么必须安装? * 2.1.2 安装步骤

By Ne0inhk
2026!在Windows的Python中安装GDAL包(小白能成!)

2026!在Windows的Python中安装GDAL包(小白能成!)

最近更新 2026.02.10日,GDAL发布预告:新版本将支持更多的指令! 新版本,以修复bug为主,提高稳定性! 有朋友催我赶紧更新教程,我上次更新是年前的时候了,恰好是GDAL上一个版本出来的时间。 前言 很多大气,地理,环境,生态,遥感,城市空间规划等专业的朋友,在各种终端尝试 pip install GDAL 指令时,都会遇到各种各样奇怪的报错,无论如何都安不上。说实话这条路走不通,不怪你。 因为GDAL不是标准的python库,不能直接用pip指令,进行管理操作。 实际证明,这样走不通的,请你放弃幻想。跟着这个教程一步一步的操作,你大概率是可以成功的。我会尽可能的详细,一步一步,足够缓慢,足够让每个第一次安装的朋友都能够明白。 感谢北京师范大学地理学院的朋友提供的帮助,我将把这个方法详细记录,希望可以帮助到更多朋友。 个人电脑配置说明 OS:Windows 11 Enterprise(MacOS和Linux的朋友,建议拉到文末,

By Ne0inhk