【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)

目录

一、前言

二、实验环境

三、Python容器(Containers)

0、容器介绍

1、列表(List)

1. 初始化

a. 创建空列表

b. 使用现有元素初始化列表

c. 使用列表生成式

d. 复制列表

2. 索引和切片

a. 索引

b. 负数索引

c. 切片

3. 常用操作(更新、删除)

a. 更新单个元素

b. 更新切片

c. 删除单个元素

d. 删除切片

e. 增量更新

f. 复制更新

4. 常用函数

append(element):将元素添加到列表的末尾。

extend(iterable):将可迭代对象的元素添加到列表的末尾。

insert(index, element):在指定的索引位置插入元素。

remove(element):从列表中移除第一个匹配的元素。

pop(index):移除并返回指定索引位置的元素。

index(element):返回指定元素首次出现的索引。

count(element):返回指定元素在列表中出现的次数。

sort():对列表进行就地排序,按升序排列。

reverse():对列表进行就地反转。

copy():返回列表的浅拷贝。

5. 拆包

a. 基本拆包

b. 扩展拆包

6. 遍历       

a. 使用for循环

b. 使用while循环和索引

c. 使用enumerate()函数


一、前言

        Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

        Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组、数组索引、数据类型、数组数学、广播
  • Matplotlib:绘图,子图,图像
  • IPython:创建笔记本,典型工作流程

二、实验环境

        Python 3.7

        运行下述命令检查Python版本

 python --version 

三、Python容器(Containers)

0、容器介绍

        Python中的容器是用于存储和组织数据的对象。常见的容器包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。

  • 列表是有序的可变容器,可以包含不同类型的元素,使用方括号([])来创建。
my_list = [1, 2, 3, 'a', 'b', 'c']
  • 元组是有序的不可变容器,也可以包含不同类型的元素,使用圆括号(())来创建。
my_tuple = (1, 2, 3, 'a', 'b', 'c')
  • 集合是无序且不重复的容器,用于存储唯一的元素,使用大括号({})或者set()函数来创建。
my_set = {1, 2, 3, 'a', 'b', 'c'}
  •  字典是无序的键值对容器,用于存储具有唯一键的值,使用花括号({})或者dict()函数来创建。
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

        这些容器都提供了不同的方法和操作,用于对数据进行存储、访问和处理。可以根据具体的需求选择适合的容器类型。

1、列表(List)

最常用的序列类型,创建后可以随意被修改,可以灵活地进行各类操作。

1. 初始化

a. 创建空列表

        要创建一个空列表,可以使用空的方括号[]或者list()函数来初始化。

empty_list = []
empty_list = list()

b. 使用现有元素初始化列表

        可以在创建列表时提供初始元素。初始元素可以是常量、变量或表达式。

numbers = [1, 2, 3, 4, 5]
fruits = ['apple', 'banana', 'orange']

c. 使用列表生成式

        列表生成式是一种快速创建列表的方法,它可以根据特定的规则和表达式生成列表中的元素。

squares = [x**2 for x in range(1, 6)]  # 生成包含1到5的平方的列表

d. 复制列表

        要复制一个列表,可以使用切片操作或copy()方法。例如:

original_list = [1, 2, 3]
copied_list = original_list[:]  # 使用切片操作复制列表
# 或
copied_list = original_list.copy()  # 使用copy()方法复制列表

2. 索引和切片

        列表的索引和切片是访问和获取列表元素的常用技巧。索引用于获取单个元素,而切片用于获取列表的子集。

a. 索引

        列表中的每个元素都有一个对应的索引,索引从0开始,表示元素在列表中的位置。可以使用索引来获取列表中特定位置的元素。

my_list = ['apple', 'banana', 'orange']
print(my_list[0])  # 输出:'apple'
print(my_list[1])  # 输出:'banana'

b. 负数索引

        列表还支持负数索引,负数索引从列表的末尾开始计数,-1表示最后一个元素,-2表示倒数第二个元素,以此类推。

my_list = ['apple', 'banana', 'orange']
print(my_list[-1])  # 输出:'orange'
print(my_list[-2])  # 输出:'banana'

c. 切片

        切片用于获取列表的子集,通过指定起始索引和结束索引来实现。切片操作返回一个新的列表,包含指定范围内的元素。

my_list = ['apple', 'banana', 'orange', 'grape', 'mango']
print(my_list[1:4])     # 输出:['banana', 'orange', 'grape']
print(my_list[1:])      # 输出:['banana', 'orange', 'grape', 'mango']
print(my_list[1:-2])    # 输出:['banana', 'orange']
print(my_list[-1:-2])   # 输出:[]

  

3. 常用操作(更新、删除)

        列表的更新和删除操作可以用来修改列表中的元素或删除特定的元素

a. 更新单个元素

my_list = ['apple', 'banana', 'orange']
my_list[1] = 'grape'
print(my_list)  # 输出:['apple', 'grape', 'orange']

b. 更新切片

        要更新列表中的一个切片,可以使用切片操作符和赋值语句来将新的元素列表赋值给指定的切片位置。

my_list = ['apple', 'banana', 'orange', 'grape', 'mango']
my_list[1:4] = ['kiwi', 'watermelon']
print(my_list)  # 输出:['apple', 'kiwi', 'watermelon', 'mango']

c. 删除单个元素

        要删除列表中的单个元素,可以使用del关键字和要删除的元素的索引。

my_list = ['apple', 'banana', 'orange']
del my_list[1]
print(my_list)  # 输出:['apple', 'orange']

d. 删除切片

        要删除列表中的一个切片,可以使用切片操作符和del关键字。

my_list = ['apple', 'banana', 'orange', 'grape', 'mango']
del my_list[1:4]
print(my_list)  # 输出:['apple', 'mango']

e. 增量更新

        列表还支持增量更新操作,通过使用+=运算符将新的列表与原始列表合并。

my_list = ['apple', 'banana']
my_list += ['orange', 'grape']
print(my_list)  # 输出:['apple', 'banana', 'orange', 'grape']

f. 复制更新

original_list = ['apple', 'banana', 'orange']
original_list *= 2
print(original_list) # 输出:['apple', 'banana', 'orange', 'apple', 'banana', 'orange']

4. 常用函数

append(element):将元素添加到列表的末尾。

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # 输出: [1, 2, 3, 4]

extend(iterable):将可迭代对象的元素添加到列表的末尾。

my_list = [1, 2, 3]
another_list = [4, 5, 6]
my_list.extend(another_list)
print(my_list)  # 输出: [1, 2, 3, 4, 5, 6]

insert(index, element):在指定的索引位置插入元素。

my_list = [1, 2, 3]
my_list.insert(1, 4)
print(my_list)  # 输出: [1, 4, 2, 3]

remove(element):从列表中移除第一个匹配的元素。

my_list = [1, 2, 3, 2]
my_list.remove(2)
print(my_list)  # 输出: [1, 3, 2]

pop(index):移除并返回指定索引位置的元素。

my_list = [1, 2, 3]
removed_element = my_list.pop(1)
print(removed_element)  # 输出: 2
print(my_list)  # 输出: [1, 3]

index(element):返回指定元素首次出现的索引。

my_list = [1, 2, 3, 2]
index = my_list.index(2)
print(index)  # 输出: 1

count(element):返回指定元素在列表中出现的次数。

my_list = [1, 2, 3, 2]
count = my_list.count(2)
print(count)  # 输出: 2

sort():对列表进行就地排序,按升序排列。

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

reverse():对列表进行就地反转。

my_list = [1, 2, 3]
my_list.reverse()
print(my_list)  # 输出: [3, 2, 1]

copy():返回列表的浅拷贝。

my_list = [1, 2, 3]
new_list = my_list.copy()
print(new_list)  # 输出: [1, 2, 3]

5. 拆包

        列表拆包是一种将列表中的元素解压并赋值给多个变量的技术。通过列表拆包,可以方便地将列表中的元素分配给单独的变量,以便进一步处理。下面是关于列表拆包的详细说明:

a. 基本拆包

my_list = ['apple', 'banana', 'orange']
fruit1, fruit2, fruit3 = my_list
print(fruit1)  # 输出:'apple'
print(fruit2)  # 输出:'banana'
print(fruit3)  # 输出:'orange'

        在上述示例中,通过将列表中的元素赋值给变量,实现了拆包操作。拆包时,变量的数量必须与列表中的元素数量相匹配。

b. 扩展拆包

        如果列表的长度超过了变量的数量,可以使用扩展拆包运算符(*)将剩余的元素赋值给一个变量。例如:

my_list = ['apple', 'banana', 'orange', 'grape', 'mango']
fruit1, fruit2, *remaining_fruits = my_list
print(fruit1)           # 输出:'apple'
print(fruit2)           # 输出:'banana'
print(remaining_fruits) # 输出:['orange', 'grape', 'mango']

        在上述示例中,`remaining_fruits`变量通过扩展拆包运算符接收了剩余的元素,形成一个新的列表。

6. 遍历       

a. 使用for循环

使用for循环可以遍历列表中的所有元素。例如:

my_list = ['apple', 'banana', 'orange']
for fruit in my_list:print(fruit)

b. 使用while循环和索引

        使用while循环结合索引可以实现对列表的遍历。例如:

my_list = ['apple', 'banana', 'orange']
index = 0
while index < len(my_list):print(my_list[index])index += 1

c. 使用enumerate()函数

        使用enumerate()函数可以同时获取元素的索引和值。例如:

my_list = ['apple', 'banana', 'orange']
for index, fruit in enumerate(my_list):print(index, fruit)

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

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

相关文章

龙迅LT86102UX HDMI一进二出,支持分辨率4K60HZ

龙迅LT86102UXE 1. 描述 龙迅LT86102UX HDMI2.0 分路器具有符合 HDMI2.0/1.4 规范的 1&#xff1a;2 分路器、最大 6Gbps 高速数据速率、自适应均衡 RX 输入和预强调的 TX 输出&#xff0c;支持长电缆应用&#xff0c;板载无 XTAL&#xff0c;可节省 BOM 成本。 LT86102UX HDM…

【Linux】- Linux下搭建Java环境[IDEA,JDK8,Tomcat]

Java环境 1. 安装JDK2.安装tomcat3.安装idea4. 安装MySQL5.7 1. 安装JDK /usr/local&#xff1a;存放用户自行安装的软件&#xff0c;默认情况下不会被系统软件包管理器管理 发现解压后的文件已经整体移动到/usr/local/java 文件夹下 打开bin目录&#xff0c;可以看到java的版…

Nginx参数配置详细说明【全局、http块、server块、events块】【已亲测】

Nginx重点参数配置说明 本文包含Nginx参数配置说明全局块、http块、server块、events块共计30多个参数配置与解释&#xff0c;其中常见参数包含配置错误出现的错误日志&#xff0c;能让你更快的解决问题。 该文的所有参数大部分经过单独测试&#xff0c;错误都是自己收集出来的…

每日刷题-3

目录 一、选择题 二、编程题 1、计算糖果 2、进制转换 一、选择题 1、 解析&#xff1a;在C语言中&#xff0c;以0开头的整数常量是八进制的&#xff0c;而不是十进制的。所以&#xff0c;0123的八进制表示相当于83的十进制表示&#xff0c;而123的十进制表示不变。printf函数…

(翻译)JavaFX高级教程:JavaFX2.0的FXML语言

原文地址http://download.oracle.com/javafx/2.0/fxml_get_started/jfxpub-fxml_get_started.htm FXML是JavaFX 2.0新引入的。你可能会问"What is FXML?" 和"Is FXML for me?" FXML 是基于XML的一种声明性标记语言&#xff0c;用来定义应用的用户接口。F…

QT设计一个小闹钟

设置一个闹钟&#xff0c;左侧窗口显示当前时间&#xff0c;右侧设置时间&#xff0c;以及控制闹钟的开关&#xff0c;下方显示闹钟响时的提示语。当按启动按钮时&#xff0c;设置时间与闹钟提示语均不可再改变。当点击停止时&#xff0c;关闭闹钟并重新启用设置时间与闹钟提示…

【MySQL】详解聚合查询、多表查询

MySQL 增删查改&#xff08;进阶&#xff09; 文章目录 MySQL 增删查改&#xff08;进阶&#xff09;01 表的设计表的三大范式 02 查询操作进阶新增聚合查询countsumavgmaxmin 分组查询 GROUP BYHAVING 联合查询/多表查询关键思路引入内连接外连接左外连接&#xff1a;left joi…

有限状态机的概念

一、有限状态机的概念 有限状态机简称状态机&#xff0c;是表示有限个状态&#xff0c;以及在状态之间的转移和动作等行为的数学模型。状态机的要素有状态和状态转移两个。 在Unity中&#xff0c;动画状态机最重要的属性就是节点和连线&#xff0c;其中每个节点都是一个动画片…

Emscripten安装并配置环境变量

前言 Emscripten官网 官网有安装教程&#xff0c;但有些细节没有讲清楚&#xff0c;本文会很详细的讲解每一步。 一、下载 emsdk 包 emsdk – github地址 可以使用 git 去拉取&#xff0c;不过可能会超时拉取失败。 git clone https://github.com/emscripten-core/emsdk.…

数据结构与算法-队列

一.队列的基本概述 1.队列的定义 答&#xff1a;队列是现在在两端进行插入和删除操作的线性表&#xff0c;"队尾"是允许进行存入…

系统软件启动过程

实验一&#xff1a;系统软件启动过程 参考 重要文件 调用顺序 1. boot/bootasm.S | bootasm.asm&#xff08;修改了名字&#xff0c;以便于彩色显示&#xff09;a. 开启A20 16位地址线 实现 20位地址访问 芯片版本兼容通过写 键盘控制器8042 的 64h端口 与 60h端口。b.…

ApachePulsar原理解析与应用实践(学习笔记一)

随着时代的发展&#xff0c;软件设计的理念也在不断发展&#xff0c;从单体服务、面向服务、微服务&#xff0c;发展到云原生以及无服务。其演变的过程是一个能力不断增强&#xff0c;领域边界不断微分细化的过程。比如无服务就是将函数作为服务&#xff0c;就类似dns模式的服务…

什么是50ETF期权开户条件,怎么开期权交易权限?

50ETF期权是指上证50ETF期权&#xff0c;标的物是上证50ETF&#xff0c;代码是&#xff08;510500&#xff09;&#xff0c;期权是一种在上证50ETF基础上进行衍生品交易的金融工具&#xff0c;下文科普什么是50ETF期权开户条件&#xff0c;怎么开期权交易权限&#xff1f;本文来…

死锁

目录 什么是死锁 产生的条件 死锁避免 银行家算法 问题引入 银行家算法的实现思想 死锁检测 每种类型一个资源的死锁检测 每种类型多个资源的死锁检测 死锁恢复 鸵鸟算法 什么是死锁 线程死锁是指由于两个或者多个线程互相持有对方所需要的资源&#xff0c;导致这些线…

3.3.2 【MySQL】客户端和服务器通信中的字符集

3.3.2.1 编码和解码使用的字符集不一致的后果 我们知道字符 我 在 utf8 字符集编码下的字节串长这样&#xff1a; 0xE68891 &#xff0c;如果一个程序把这个字节串发送到另一个程序里&#xff0c;另一个程序用不同的字符集去解码这个字节串&#xff0c;假设使用的是 gbk 字符集…

3ds max插件CG MAGIC中的室外功能可以高效出图吗?

使用3ds Max高效出图秘诀有没有什么秘诀呢&#xff1f;如何做到快速出图呢&#xff1f; 3ds max插件CG MAGIC中的室外功能可以高效出图吗&#xff1f; CG MAGIC 是一款基于3DS max深入开发的智能辅助设计插件。 自从CG Magic专业版上线之后&#xff0c;小伙伴们对新功能诀窍…

Java中如何进行加锁??

笔者在上篇文章介绍了线程安全的问题&#xff0c;接下来本篇文章就是来讲解如何避免线程安全问题~~ 前言&#xff1a;创建两个线程&#xff0c;每个线程都实现对同一个变量count各自自增5W次&#xff0c;我们来看一下代码&#xff1a; class Counter{private int count0;publi…

数学的魅力

数学的魅力 数学的历史古代数学古希腊数学中世纪数学文艺复兴数学 数学的分支1. 代数学2. 几何学3. 微积分学4. 概率论与统计学5. 数论 数学的重要性1. 科学和技术2. 经济学和金融3. 医学和生物学4. 社会科学5. 环境科学 数学的未来1. 人工智能2. 网络安全3. 空间探索 结论 数学…

docker-compose安装nginx

基于docker-compose安装nginx 目录 一、目录结构 1、docker-compose.yml 2、nginx.conf 3、default.conf 4、index.html 二、访问测试 一、目录结构 1、docker-compose.yml version: 3 services:nginx:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/nginx:1.21.1…

单向链表(c/c++)

链表是一种常见的数据结构&#xff0c;其中运用到了结构体指针&#xff0c;链表可以实现动态存储分配&#xff0c;换而言之&#xff0c;链表是一个功能强大的数组&#xff0c;可以在某个节点定义多种数据类型&#xff0c;可以实现任意的添加&#xff0c;删除&#xff0c;插入节…