Python数据结构: 列表(List)详解

news2024/11/25 23:32:52

在这里插入图片描述

  在Python中,列表(List)是一种有序、可变的数据类型,被广泛用于存储和处理多个元素。列表是一种容器,可以包含任意数据类型的元素,包括数字字符串列表字典等。本文将深入讨论列表的各个方面,包括基本语法、常见操作,以及实际应用场景。将覆盖列表的创建访问修改列表推导式嵌套列表推导式等关键内容。

1.创建列表

  列表的创建可以通过多种方式创建,可以根据使用场景去选择

# 空列表
empty_list = []

# 包含元素的列表
int_list = [2,4,5,6,8]
float_list = [3.0,3.14,100.1,99.999]
colors = ['RED','GREEN','BLUE','YELLOW']
bools = [True,False,True,True,False]

# 包含其他数据结构类型的数据
list1 = [[2,3],[4,6]]
list2 = [(3,4,2)]
list3 = [{'name':'Alice'},{'age':18},{'性别':'女'}]

# 包含不同数据类型的元素
mixed_list = [11,3.14,'hello',True,[3,'python'],('a','b','c'),{'fruits':'banana'}]

# 使用内置函数list()创建
numbers = list(range(2,8))

2.访问列表元素或修改元素

  通过索引可以访问和修改列表元素,索引从0开始,同时支持负索引从列表末尾访问列表中的元素。

mixed_list = [11,3.14,'hello',True,[3,'python'],('a','b','c'),{'fruits':'banana'}]

# 通过切片的方式访问列表中的元素
print(mixed_list[0]) # 访问第一元素,输出结果: 11
print(mixed_list[-1]) # 访问末尾的元素,输出结果: {'fruits': 'banana'}
print(mixed_list[2:5]) # 输出结果: ['hello', True, [3, 'python']]

# 通过索引还可以修改列表
mixed_list[1] = 'modify'
print(mixed_list) # 列表中第2个元素值已修改

3.列表方法

  列表支持很多方法:
在这里插入图片描述

3.1 list.append(x)

  在列表末尾添加一个元素,相当于 a[len(a):] = [x]

fruits = ['apple', 'banana', 'orange']
fruits.append('pear')
print(fruits)  # 输出: ['apple', 'banana', 'orange', 'pear']

3.2 list.extend(iterable)

  用可迭代对象的元素扩展列表。相当于a[len(a):] = iterable

fruits = ['apple', 'banana', 'orange']
more_fruits = ['pear','cherries']
fruits.extend(more_fruits)
print(fruits) # 输出 ['apple', 'banana', 'orange', 'pear', 'cherries']

3.3 list.insert(i, x)

  在指定位置插入元素。第一个参数是插入元素的索引,因此,a.insert(0, x)在列表开头插入元素,a.insert(len(a), x) 等同于 a.append(x)

fruits = ['apple', 'banana', 'orange']
fruits.insert(0,'pear') # 在开头插入
fruits.insert(len(fruits),'cherries')# 在末尾插入
print(fruits)# 输出 ['apple', 'banana', 'orange', 'pear', 'cherries']

3.4 list.remove(x)

  从列表中删除第一个值为x 的元素。未找到指定元素时,触发 ValueError 异常。

fruits = ['apple', 'banana', 'orange']
fruits.remove('orange')
print(fruits) # 输出 ['apple', 'banana']
fruits.remove('pear') #未找到指定元素时,触发 ValueError 异常
print(fruits)

  运行结果:
在这里插入图片描述

3.5 list.pop([i])

  删除列表中指定位置的元素,并返回被删除的元素。未指定位置时,a.pop()删除并返回列表的最后一个元素。(方法签名中 i 两边的方括号表示该参数是可选的,不是要求输入方括号。)

fruits = ['apple', 'banana', 'orange','pear']
remove_fruit = fruits.pop(2)
print(remove_fruit)# 输出 orange
print(fruits)# 输出 ['apple', 'banana', 'pear']

3.6 list.clear()

  删除列表里的所有元素,相当于del a[:]

fruits = ['apple', 'banana', 'orange','pear']
fruits.clear()
print(fruits)# 输出 []

3.7 list.index(x[, start[, end]])

  返回列表中第一个值为 x 的元素的零基索引。未找到指定元素时,触发 ValueError 异常。
  可选参数startend是切片符号,用于将搜索限制为列表的特定子序列。返回的索引是相对于整个序列的开始计算的,而不是 start 参数。

fruits = ['apple', 'banana', 'orange','pear','cherries','grape']
index_banana = fruits.index('banana') # 
print(f"Index of 'banana': {index_banana}")

index_pear = fruits.index('pear',2) # 从索引2开始查找
print(f"Index of 'pear': {index_pear}")

index_orange = fruits.index('orange',1,4) # 在索引1到4之间查找
print(f"Index of 'pear': {index_pear}")

index_orange1 = fruits.index('orange',3,4) # 错误索引查找

  运行结果:
在这里插入图片描述

3.8 list.count(x)

  返回列表中元素x 出现的次数。

fruits = ['apple', 'banana', 'orange','pear','cherries','grape','apple','apple']
count_apple = fruits.count('apple')
print(f'苹果在列表中出现了{count_apple}次')

3.9 list.sort(*, key=None, reverse=False)

  就地排序列表中的元素

fruits = ['apple', 'banana', 'orange','pear','cherries','grape','apple','apple']
fruits.sort()# 按照字母顺序排序
print(fruits) # 输出 ['apple', 'apple', 'apple', 'banana', 'cherries', 'grape', 'orange', 'pear']

numbers = [4, 2, 1, 3, 5]
numbers.sort()
print(numbers)  # 输出: [1, 2, 3, 4, 5]

3.10 list.reverse()

  翻转列表中的元素。

fruits = ['apple', 'banana', 'orange','pear']
fruits.reverse()
print(fruits)# 输出 ['pear', 'orange', 'banana', 'apple']

3.11 list.copy()

  返回列表的浅拷贝。相当于a[:]

fruits = ['apple', 'banana', 'orange']
fruits_copy = fruits.copy()
print(fruits_copy)  # 输出: ['apple', 'banana', 'orange']

4.列表推导式

4.1 语法

  new_list= [expression for item in iterable if condition]
  expression是对每个元素进行操作的表达式。
  item 是来自可迭代对象(如列表、字符串等)的元素。
  condition 是可选的条件,用于过滤元素。

4.2 示例

1) 基本列表推导式

# 生成平方数列表
squares = [x**2 for x in range(5)]
print(squares) # 输出: [0, 1, 4, 9, 16]

2) 带条件的列表推导式

# 生成偶数平方数列表
even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # 输出: [0, 4, 16, 36, 64]

3) 字符串操作列表推导式

# 提取字符串中的数字
string = "Hello 123 Python 456"
numbers = [int(x) for x in string if x.isdigit()]
print(numbers) # 输出: [1, 2, 3, 4, 5, 6]

4) 嵌套列表推导式

# 生成九九乘法表
multiplication_table = [[i * j for j in range(1, 10)] for i in range(1, 10)]
for l_table in multiplication_table:
    print(l_table)
# 输出: 一个包含九个列表的列表,每个列表表示乘法表的一行

  运行结果:
在这里插入图片描述

5)带条件的嵌套列表推导式

# 生成过滤偶数的九九乘法表
filtered_table = [[i * j for j in range(1, 10) if (i * j) % 2 == 0] for i in range(1, 10)]
for l_table in filtered_table:
    print(l_table)
# 输出: 一个包含九个列表的列表,每个列表包含符合条件的乘法表元素

  运行结果:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

续:将基于Nasm汇编的打字小游戏,移植到DOSBox

续:将基于Nasm汇编的打字小游戏,移植到DOSBox 文章目录 续:将基于Nasm汇编的打字小游戏,移植到DOSBox前情提要细说1 编译2 程序入口3 定位段 运行体验 前情提要 上一篇:【编程实践】黑框框里的打字小游戏,但…

一键创建PDF文档,高效管理您的文件资料

在繁忙的工作中,您是否曾为处理PDF文件而感到烦恼?现在,我们为您推荐一款全新的高效PDF文档管理工具——一键创建PDF文档,让您的工作效率瞬间提升! 首先,在首助编辑高手的主页面板块栏里,选择“…

集简云银行系统:API连接广告推广与客服系统,降低企业研发成本

连接多元化软件系统的挑战 在企业进行业财税一体化的进程中,以及企业数字化进程中,企业需要连接多个软件系统。然而,随着业务的发展,使用的软件越来越多,软件与软件之间的连接和数据同步成为了一个挑战。这在公司的财…

【神印王座】林鑫和李馨甜蜜接吻,团灭七阶恶魔,温馨结尾

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 深度爆料,《神印王座》80话最新剧情解析。有关李馨与林鑫的爱情故事源于一场争执。那时,两人都年轻气盛,不肯向对方低头。但是,经过一段时间的相处,…

C#,Python实践,用CodeFormer实现人脸重建(Face Restoration),模糊清晰、划痕修复及黑白上色

无论是自己、家人或是朋友、客户的照片,免不了有些是黑白的、被污损的、模糊的,总想着修复一下。作为一个程序员 或者 程序员的家属,当然都有责任满足他们的需求、实现他们的想法。除了这个,学习了本文的成果,或许你还…

盘点10个地推拉新和网推拉新app推广接单平台,免费一手渠道平台

首推:”聚量推客“ 一手官签服务商 官方邀请码 000000 在地推行业里,每个人心中的第一的地推拉新app推广接单平台可能不一样,但之所以会把相关的地推拉新app推广平台推上第一的宝座,就是因为这些地推平台有过人的优势。因此本篇文…

JavaScript如何实现钟表效果,时分秒针指向当前时间,并显示当前年月日,及2024春节倒计时,源码奉上

本篇有运用jQuery&#xff0c;记得引入jQuery库&#xff0c;否则不会执行的喔~ <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title></title> <meta name"chenc" content"Runoob"> <met…

立体库堆垛机提升电机运行动作功能块

形成允许提升定位距离误差其误差值可要据现场实际更改 进入提升定位范围内

苹果M3 MacBook Pro续航实测 续航超17小时 比 M2 Pro 还要长

苹果公司在日前召开的“来势迅猛”主题活动中&#xff0c;推出了新款 MacBook Pro 机型&#xff0c;搭载全新 3nm M3 系列芯片&#xff0c;显著提高续航表现&#xff0c;苹果表示&#xff0c;新机提供了“Mac 有史以来最长的电池续航”。 配备 M3 芯片的 14 英寸 MacBook Pro 在…

具名挂载和匿名挂载

匿名卷挂载 &#xff1a; -v 的时候只指定容器内的路径 如下面这个&#xff1a;/etc/nginx 1.docker run -d -P --name nginx -v /etc/nginx nginx 2.查看所有卷 docker volume ls 这里发现&#xff0c;这就是匿名挂载&#xff0c;只指定容器内的路径&#xff0c;没有指定…

Redis的内存淘汰策略分析

概念 LRU 是按访问时间排序&#xff0c;发生淘汰的时候&#xff0c;把访问时间最久的淘汰掉。LFU 是按频次排序&#xff0c;一个数据被访问过&#xff0c;把它的频次 1&#xff0c;发生淘汰的时候&#xff0c;把频次低的淘汰掉。 几种LRU策略 以下集中LRU测率网上有很多&am…

blender动画制作软件拓扑全流程

拓扑在三维动画制作中至关重要&#xff0c;原因如下&#xff1a; 1. 动画变形&#xff1a; 自然形变&#xff1a; 良好的拓扑结构能够支持角色或物体在动画中的自然形变&#xff0c;例如关节弯曲、肌肉收缩等。流畅运动&#xff1a; 适当的拓扑有助于保持模型表面的平滑性&…

Simulia仿真之CST的使用指南(1) | 百世慧®

前言 CST是Computer Simulation Technology的缩写,是全球范围内众多工程师都喜欢使用的高端电磁仿真分析软件。 本文又名《智慧的CST生活》这里一共列出了120个章节&#xff0c;其中包括CST使用过程中的有用小技巧&#xff0c;还有给用户提供技术支持的过程中常见的问题。本专…

QWidget 实现九宫格图案解锁

前言 最近需要实现一个九宫格图案解锁功能,查看网上的方案,基于QWidget的方案全网搜来搜去就一篇 Qt编写自定义控件:图案密码锁, 都是炒来炒去的同一篇,代码还比较复杂,运行后在PC端还是可以的,但是运行在arm机器上,就卡顿,或者容易断开手势连接线,各种不友好,于是自…

5.浮点数及其运算

目录 一. 浮点数的表示 &#xff08;1&#xff09;表示 &#xff08;2&#xff09;规格化 二. IEEE 754标准 三. 浮点数的运算 &#xff08;1&#xff09;步骤 &#xff08;2&#xff09;关于舍入 四. C语言的强制类型转换 一. 浮点数的表示 &#xff08;1&#xff09…

Kali无线网卡无法识别

啊莫,该不会有人Kali系统识别不了自己的无线网卡吧! 环境:本来用作监听功能的3037芯片无线网卡,自己胡乱调,一不小心调试成了物理网卡的功能,变成了WLAN2网卡,结果用在了Windows系统上!如果你也是这样,点开你的网络适配器看看吧! 解决思路:1.删驱动 删除Windows上的…

海云安发布国内首款融合AI大语言模型(LLM)的源代码检测平台SCAP++

继ChatGPT发布后&#xff0c;如何将大语言模型技术与各个领域结合应用引起了广泛的关注与探讨。随着这股AI浪潮的兴起&#xff0c;谷歌、微软、百度等公司也纷纷推出了自己的大语言模型&#xff0c;并且在机器翻译、文本摘要、情感分析、对话系统、问答系统等多个领域得到了广泛…

新发布的Java使用率均超Java8

Java 软件供应商 Azul 发布了首份年度 Java 现状调查报告&#xff0c;基于对全球 2062 名 Java 专业人士和基于 Java 的应用程序用户进行的调查。 Java 软件供应商 Azul 发布了首份年度 Java 现状调查报告&#xff0c;基于对全球 2062 名 Java 专业人士和基于 Java 的应用程序…

高等数学教材重难点题型总结(三)函数与极限

首先是考研大纲包含的内容&#xff1a; 1.理解并会用罗尔(Rolle)定理、拉格朗日(Lagrange)中值定理和泰勒(Taylor)定理&#xff0c;了解并会用柯西(Cauchy)中值定理. 2.掌握用洛必达法则求未定式极限的方法. 3.理解函数的极值概念&#xff0c;掌握用导数判断函数的单调性和求函…

报错信息Update your application‘s configuration

在使用Maven项目时&#xff0c;有一个报错信息是&#xff1a;Update your applications configuration 这类问题&#xff0c;就是我们的application.yml文件 或者 application.properties文件 内容哪里写错了 我的问题是格式对齐方式出错&#xff0c;如下&#xff1a; 修改过后…