Python列表:灵活多变的数据结构

文章目录

  • 一、列表
    • 1.创建列表
    • 2.访问列表元素
    • 3.修改列表元素
    • 4.添加元素
    • 5.删除元素
  • 二、列表脚本操作符
    • 1.连接运算符 +
    • 2.重复运算符 *
  • 三、列表函数&方法
    • 1.函数
      • 1.1 len() 函数
      • 1.2 max() 函数
      • 1.3 min() 函数
      • 1.4 sum() 函数
      • 1.5 list() 函数
    • 2.方法
      • 2.1 append() 方法
      • 2.2 extend() 方法
      • 2.3 count() 方法
      • 2.4 index() 方法
      • 2.5 insert()方法
      • 2.6 pop() 方法
      • 2.7 remove() 方法
      • 2.8 reverse() 方法
      • 2.9 sort() 方法
  • 四、总结


一、列表

在Python 3中,列表是一种有序的集合,它包含了多个元素并且每个元素可以是任意类型的数据。列表使用方括号 [ ] 来表示,其中的元素由逗号 , 分隔开。

1.创建列表

首先,我们可以创建一个空的列表:

# 创建一个空列表
my_list = []

然后,我们创建一个包含多个元素的列表

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

2.访问列表元素

序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。我们可以使用 [] 运算符来访问列表中的元素。在 [] 中指定索引值,例如:

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 访问列表元素
print(my_list[0])  # 输出:1
print(my_list[1])  # 输出:2

索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 访问列表元素
print(my_list[-1])  # 输出:banana
print(my_list[-2])  # 输出:apple

如果索引值超出了列表的范围,将引发一个 IndexError 异常。

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 访问列表元素
print(my_list[-8])  

输出结果:

在这里插入图片描述
我们还可以采用列表切片来检索一个范围的元素,使用 : 运算符来定位要检索的开始索引(包含)和结束索引(不包含)。

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 访问列表元素
print(my_list[1:3])  # 输出:[2, 3]

这里需要注意:切片操作包括从开始索引所指示的元素开始,一直到结束索引所指示的元素,但不包括最终索引所指示的元素。如果没有指定开始索引,将使用列表的第一个元素作为默认开始索引;如果没有指定结束索引,则将使用列表中的最后一个元素作为默认结束索引。

我们还可以使用负数索引来访问列表中的元素。

my_list = [1, 2, 3, 'apple', 'banana']

# 访问列表元素
print(my_list[:-2])  # 输出:[1, 2, 3]

3.修改列表元素

列表中的元素是可变的,可以通过赋值运算符 = 来更改。

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 修改列表元素
my_list[0] = '4'
print(my_list)  # 输出:[4, 2, 3, 'orange', 'banana']

我们也可以使用切片操作将多个元素同时更改:

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 修改列表元素
my_list[0:2] = [4,5]
print(my_list)  # 输出:[4, 5, 3, 'orange', 'banana']

4.添加元素

在列表的末尾添加一个元素,可以使用 append() 方法:

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 添加元素
my_list.append(4)
print(my_list) # 输出:[1, 2, 3, 'apple', 'banana', 4]

如果你想在列表的任意位置添加元素,可以使用 insert() 方法。

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 添加元素
my_list.insert(1, 4)
print(my_list) # 输出:[1, 4, 2, 3, 'apple', 'banana']

insert() 方法用于将指定元素插入到列表的指定位置,语法如下:

list.insert(index, element)
# index 表示要插入的位置索引。
# element 表示要插入的元素。

5.删除元素

如果是删除指定位置的元素,可以采用del关键字或者pop()方法

del关键字

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 删除元素
del my_list[1]
print(my_list) # 输出:[1, 3, 'apple', 'banana']

pop()方法

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 删除元素
my_list.pop(1)
print(my_list) # 输出:[1, 3, 'apple', 'banana']

如果是删除列表中的指定元素,还可以使用remove() 方法

# 创建一个列表
my_list = [1, 2, 3, 'apple', 'banana']

# 删除元素
my_list.remove(1)
print(my_list) # 输出:[2, 3, 'apple', 'banana']

二、列表脚本操作符

1.连接运算符 +

连接运算符 + 用于将两个列表连接成一个新的列表。

list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list1 + list2
print(result)  # 输出:[1, 2, 3, 4, 5, 6]

2.重复运算符 *

重复运算符 * 用于将列表的元素重复多次。

list1 = [1, 2, 3]
result = list1 * 2
print(result)  # 输出:[1, 2, 3, 1, 2, 3]

三、列表函数&方法

1.函数

1.1 len() 函数

len()函数的作用是返回列表中元素的个数。

# 创建一个列表
my_list = [10, 20, 30, 40, 50]

# 使用 len() 函数获取列表中元素的个数
length = len(my_list)
print(length)  # 输出:5

1.2 max() 函数

max() 函数的作用是返回列表中元素的最大值。

# 创建一个列表
my_list = [10, 20, 30, 40, 50]

# 使用 max() 函数获取列表中的最大值
max_value = max(my_list)
print(max_value)  # 输出:50

1.3 min() 函数

min() 函数的作用是返回列表中元素的最小值。

# 创建一个列表
my_list = [10, 20, 30, 40, 50]

# 使用 min() 函数获取列表中的最小值
min_value = min(my_list)
print(min_value)  # 输出:10

1.4 sum() 函数

sum函数的作用是返回列表中所有元素的总和。

# 创建一个列表
my_list = [10, 20, 30, 40, 50]

# 使用 sum() 函数计算列表中所有元素的总和
total = sum(my_list)
print(total)  # 输出:150

1.5 list() 函数

list() 函数的作用是可以用来将一个可迭代对象(如元组、字符串、集合等)转换为列表。

# 将元组转换为列表
tuple_data = (1, 2, 3, 4, 5)
list_from_tuple = list(tuple_data)
print(list_from_tuple)  # 输出:[1, 2, 3, 4, 5]

# 将字符串转换为列表
string_data = "hello"
list_from_string = list(string_data)
print(list_from_string)  # 输出:['h', 'e', 'l', 'l', 'o']

# 将集合转换为列表
set_data = {1, 2, 3, 4, 5}
list_from_set = list(set_data)
print(list_from_set)  # 输出:[1, 2, 3, 4, 5]

2.方法

2.1 append() 方法

append() 方法的作用是在列表末尾添加一个元素。

# 创建一个列表
my_list = [10, 20, 30, 40, 50]

# 使用 append() 方法在列表末尾添加元素
my_list.append(100)
my_list.append('six')
my_list.append([7, 8, 9])
print(my_list)  # 输出:[10, 20, 30, 40, 50, 100, 'six', [7, 8, 9]]

2.2 extend() 方法

extend() 方法的作用是将可迭代对象中的元素添加到列表末尾。

# 创建一个列表
my_list = [10, 20, 30, 40, 50]

# 使用 extend() 方法将可迭代对象中的元素添加到列表末尾
my_list.extend([7, 8, 9])
print(my_list)  # 输出:[10, 20, 30, 40, 50, 7, 8, 9]

2.3 count() 方法

count() 方法的作用是统计列表中某个元素出现的次数。

# 示例 1 – 确定项在列表中出现的次数。
my_list = [1, 2, 2, 2, 3, 4, 5, 5, 6]
count = my_list.count(2)
print("数量: ", count) # 输出 数量:  3

# 示例 2 – 使用计数结果在列表中移除元素。
my_list = [1, 2, 2, 2, 3, 4, 5, 5, 6]
count = my_list.count(2)
for i in range(count):
    my_list.remove(2)
print(my_list) # 输出 [1, 3, 4, 5, 5, 6]

# 示例 3 – 查找列表中唯一元素的数量。
my_list = [1, 2, 3, 4, 5, 6]
unique_count = len(set(my_list))
print("唯一元素数量: ", unique_count) # 输出 唯一元素数量:  6

2.4 index() 方法

index() 方法的作用是返回列表中某个元素的第一个匹配项的索引。

# 例1:查找列表中特定元素的索引
fruits = ['apple', 'banana', 'cherry']
print(fruits.index('banana')) # 输出1

# 例2:查找列表中特定元素的索引,指定起始位置
fruits = ['apple', 'banana', 'cherry']
print(fruits.index('banana', 1)) # 输出1

# 例3:查找列表中特定元素的索引,指定起始位置和结束位置
fruits = ['apple', 'banana', 'cherry']
print(fruits.index('banana', 1, 3)) # 输出1

# 例4:查找不存在的元素
fruits = ['apple', 'banana', 'cherry']
print(fruits.index('orange')) # 会引发ValueError异常

以下是一些关于index()方法的注意事项:

  1. 如果要查找的元素在列表中多次出现,则index()方法只会返回第一个匹配元素的索引。
  2. 如果要查找的元素不存在于列表中,则index方法将引发ValueError异常。
  3. 如果指定了start参数,将从指定的索引处开始查找元素。如果元素不存在,则引发ValueError异常。
  4. 如果指定了end参数,则index()方法将在指定的索引处之前停止查找元素。如果元素不存在,则引发ValueError异常。
  5. 如果省略start和end参数,则index()方法将在列表的起始位置查找元素。

2.5 insert()方法

insert()方法的作用是在指定位置插入一个元素。

# 示例 1 – 插入一个元素
fruits = ["apple", "banana", "cherry"]
fruits.insert(1, "orange")
print(fruits) # 输出['apple', 'orange', 'banana', 'cherry']

# 示例 2 – 插入多个元素
fruits = ["apple", "banana", "cherry"]
fruits.insert(1, ["orange", "watermelon"])
print(fruits) # 输出['apple', ['orange', 'watermelon'], 'banana', 'cherry']
# 需要注意的是,这种方式插入的元素是一个列表。如果想要在列表中插入多个独立的元素,需要将它们逐一插入。

# 插入多个独立的元素
fruits = ["apple", "banana", "cherry"]
fruits.insert(1, "orange")
fruits.insert(2, "watermelon")
print(fruits) # 输出 ['apple', 'orange', 'watermelon', 'banana', 'cherry']

# 示例 3 – 在列表的长度范围外插入元素,引发IndexError异常
fruits = ["apple", "banana", "cherry"]
fruits.insert(5, "orange")

2.6 pop() 方法

pop() 方法的作用是移除列表中指定位置的元素,并返回该元素的值。如果未指定位置,则默认移除并返回最后一个元素。

# 示例 1 – 默认移除最后一个元素
fruits = ['apple', 'banana', 'cherry']
fruits.pop()
print(fruits) # 输出 ['apple', 'banana']

# 示例 2 – 移除指定位置的元素
fruits = ['apple', 'banana', 'cherry']
fruits.pop(1)
print(fruits) # 输出 ['apple', 'cherry']

# 示例 3 – 异常案例
fruits = ['apple', 'banana', 'cherry']
fruits.pop(3) # 输出 IndexError: pop index out of range

2.7 remove() 方法

remove() 方法的作用是移除列表中某个值的第一个匹配项。

# 示例 1 – 删除元素
fruits = ['apple', 'banana', 'orange']
fruits.remove('orange')
print(fruits) # 输出 ['apple', 'banana']

# 示例 2 – 删除第一个匹配项
fruits = ['apple', 'banana', 'orange', 'apple']
fruits.remove('apple')
print(fruits) # 输出 ['banana', 'orange', 'apple']

# 示例 3 – 删除不存在的元素
fruits = ['banana', 'orange']
fruits.remove('apple')
print(fruits) # 输出 ValueError: list.remove(x): x not in list

2.8 reverse() 方法

reverse() 方法的作用是将列表中的元素反向排列。

# 创建一个列表
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

# 使用 reverse() 方法将列表中的元素反向排列
numbers.reverse()
print(numbers)  # 输出:[5, 3, 5, 6, 2, 9, 5, 1, 4, 1, 3]

2.9 sort() 方法

sort() 方法的作用是对列表进行排序。sort(key=None, reverse=False):可选参数 key 指定排序的方式,reverse=True 则表示降序排序。默认为升序。

# 创建一个列表
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]

# 使用 sort() 方法对列表进行排序
# 默认升序
numbers.sort()
print(numbers)  # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

# 降序
numbers.sort(reverse=True)
print(numbers)  # 输出:[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]

注意事项:

  1. sort()方法直接修改原始列表,而不是返回一个新的列表。
  2. 不能对含有数字和字符串的列表进行排序,如[“apple”, 1, “banana”, 2]。
  3. 如果需要倒序排序,请使用reverse()方法,如list.reverse()。

四、总结

今天主要讲了Python的列表的相关内容。

感谢你的观看!

在这里插入图片描述

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

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

相关文章

nginx 具体介绍

一,nginx 介绍 (一)nginx 与apache 1, Apache event 模型 相对于 prefork 模式 可以同时处理更多的请求 相对于 worker 模式 解决了keepalive场景下,长期被占用的线程的资源浪费问题 因为有监听线程&#…

江科大STM32学习笔记(上)

STM32F103xx 前言外设篇GPIO输出GPIO位结构GPIO模式外设的GPIO配置查看实战1: 如何进行基本的GPIO输入输出 OLED显示屏及调试Keil的调试模式演示 EXTI外部中断NVIC基本结构EXTI结构代码实战2:如何使用中断和对射式红外传感器&旋转编码器 TIM&…

嵌入式基础准备 | 初识嵌入式AI

1、嵌入式设备发展 1、第一代:2000年开始 单片机 最简单的电子产品 遥控器,烟雾报警器 裸机编程 RTOS 智能音箱,路由器,摄像头 实时性要求高的操作系统(马上请求,马上响应) 2、第二代&#xf…

程序媛的mac修炼手册-- 小白入门Java篇

最近因为要用CiteSpace做文献综述,间接接触Java了。所以,继Python、C之后,又要涉猎Java了。刺激!! 由于CiteSpace与Java要求版本高度匹配,有个匹配详情明天为大家讲解。总之,我的Java之旅开始于…

华清远见作业第四十一天——Qt(第三天)

思维导图: 编程 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如…

喜报 | 通付盾再次入选“苏州市网络和数据安全技术支撑单位”

近日,为加强苏州市网络和数据安全技术服务体系建设,提升网络和数据安全保障水平,苏州市互联网信息办公室、苏州市互联网协会发布了2024-2025年度苏州市网络和数据安全技术支撑单位名单。经过自主申报、资料审核、专家评审等环节,江…

「C语言进阶1」动态内存分配

目录 一、动态内存分配是什么? 二、为什么需要动态内存分配? 三、怎么进行动态内存分配? 1. malloc 2. calloc 3. realloc a. realloc功能解析 b. 内存泄漏和内存块被截断问题 c. 总结 4. free 四、使用动态内存分配常见的问题 【面试题】 一…

线代:认识行列式、矩阵和向量

本文主要参考的视频教程如下: 8小时学完线代【中国大学MOOC*小元老师】线性代数速学_哔哩哔哩_bilibili 另外这个视频可以作为补充: 【考研数学 线性代数 基础课】—全集_哔哩哔哩_bilibili 行列式的概念和定义 一般会由方程组来引出行列式 比如一个二阶…

IO进程线程的通信操作

1.编程实现互斥机制 程序代码&#xff1a; 1 #include<myhead.h>2 int num520;//临界资源3 //1.创建一个互斥锁变量4 pthread_mutex_t mutex;//定义一个pthread_mutex_t类型的变量5 //定义任务1函数6 void *task1(void *arg)7 {8 printf("不畏过去\n");9 …

java面试题之mybatis篇

什么是ORM&#xff1f; ORM&#xff08;Object/Relational Mapping&#xff09;即对象关系映射&#xff0c;是一种数据持久化技术。它在对象模型和关系型数据库直接建立起对应关系&#xff0c;并且提供一种机制&#xff0c;通过JavaBean对象去操作数据库表的数据。 MyBatis通过…

驾校预约|驾校预约小程序|基于微信小程序的驾校预约平台设计与实现(源码+数据库+文档)

驾校预约小程序目录 目录 基于微信小程序的驾校预约平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户​微信端功能模块​ 2、管理员服务端功能模块 &#xff08;1&#xff09;学员信息管理 &#xff08;2&#xff09; 教练信息管理 &#xff08;3&…

Django学习笔记-HTML实现服务器图片的下载

1.index编写代码,跳转下载页面 2.创建download界面 3.编写download路由 4.创建download函数 1).如果请求的方法是GET&#xff0c;imglist变量存储从models.imgModel模型中获取的所有对象,创建字典ctx,使用render函数来渲染download.htm 2).如果请求的方法是POST,获取要下载的文…

Spring学习上下文【ConfigurableApplicationContext】

话不多说&#xff0c;先上图&#xff1a; ConfigurableApplicationContext是Spring框架中的一个接口&#xff0c;它继承了ApplicationContext接口&#xff0c;并扩展了一些额外的方法&#xff0c;用于允许应用程序在运行时动态地修改和管理应用上下文。ConfigurableApplicati…

【js】无限虚拟列表的原理及实现

什么是虚拟列表 虚拟列表是长列表按需显示思路的一种实现&#xff0c;即虚拟列表是一种根据滚动容器元素的可视区域来渲染长列表数据中某一个部分数据的技术。 简而言之&#xff0c;虚拟列表指的就是「可视区域渲染」的列表。有三个概念需要了解一下&#xff1a; 视口容器元…

KDD 2023 图神经网络方向论文总结

ACM SIGKDD&#xff08;国际数据挖掘与知识发现大会&#xff0c;KDD&#xff09;是数据挖掘领域历史最悠久、规模最大的国际顶级学术会议&#xff0c;也是首个引入大数据、数据科学、预测分析、众包等概念的会议。今年&#xff0c;第29届 KDD 大会在美国加州长滩举行&#xff0…

冒泡排序法的名字由来,排序步骤是什么,最坏情况下的排序次数如何计算得来的呢?

问题描述&#xff1a;冒泡排序法的名字由来&#xff0c;排序步骤是什么&#xff0c;最坏情况下的排序次数如何计算得来的呢&#xff1f; 问题解答&#xff1a; 冒泡排序法的名字来源于排序过程中较大的元素会像气泡一样逐渐“冒”到序列的顶端&#xff0c;而较小的元素则会逐…

代码随想录算法训练营第四十天 343. 整数拆分、 96.不同的二叉搜索树

代码随想录算法训练营第四十天 | 343. 整数拆分、 96.不同的二叉搜索树 343. 整数拆分 题目链接&#xff1a;343. 整数拆分 - 力扣&#xff08;LeetCode&#xff09; 例如 n 10, 可以拆分为 3 * dp[7] 。因为dp[7]之前已经计算过最大 3 * 4&#xff0c; 所以dp[10] 3 * 3 …

Microsoft 365自定义安装软件

如图&#xff0c;在安装类型的步骤的时候&#xff0c;可以勾选自己想要的软件&#xff08;而非一股脑儿的安装一大堆自己不需要的&#xff09;。

AI绘画巅峰对决:Stable Diffusion 3与DALL·E 3原理深度比较

最近&#xff0c;Stable Diffusion 3 的预览版已经亮相啦&#xff01; 虽然这个AI绘画模型还没全面上线&#xff0c;但官方已经开启预览申请通道了。 https://stability.ai/stablediffusion3 而且好消息是&#xff0c;后面还会推出开源版本哦&#xff01; 这个模型套件真的…

五种多目标优化算法(MOAHA、MOGWO、NSWOA、MOPSO、NSGA2)性能对比(提供MATLAB代码)

一、5种多目标优化算法简介 多目标优化算法是用于解决具有多个目标函数的优化问题的一类算法。其求解流程通常包括以下几个步骤&#xff1a; 1. 定义问题&#xff1a;首先需要明确问题的目标函数和约束条件。多目标优化问题通常涉及多个目标函数&#xff0c;这些目标函数可能…