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

news2024/10/11 14:20:59

目录

一、前言

二、实验环境

三、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.coloradmin.cn/o/993284.html

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

相关文章

MySQL触发器详解保证入土

文章目录 简介一、MySQL触发器基础触发器分类基础常用关键字1. 定义触发器2. 创建和删除触发器3. 执行时机和条件 二、MySQL触发器的使用场景1. 数据完整性约束插入触发器更新触发器删除触发器 2. 数据变更日志的记录与追踪3. 触发器与存储过程的对比与选择 三、触发器的性能和…

强大的JTAG边界扫描(5):FPGA边界扫描应用

文章目录 1. 获取芯片的BSDL文件2. 硬件连接3. 边界扫描测试4. 总结 上一篇文章&#xff0c;介绍了基于STM32F103的JTAG边界扫描应用&#xff0c;演示了TopJTAG Probe软件的应用&#xff0c;以及边界扫描的基本功能。本文介绍基于Xilinx FPGA的边界扫描应用&#xff0c;两者几乎…

巨人互动|Facebook海外户Facebook风控规则有什么

Facebook是全球最大的社交媒体平台之一&#xff0c;每天有数十亿的用户在其上发布、分享和交流各种内容。为了维护平台的安全性和用户体验&#xff0c;Facebook制定了严格的风控规则来监测和处理违规行为。下面小编讲讲Facebook风控规则。 巨人互动|Google海外户&Google Ad…

CocosCreator3.8研究笔记(十一)CocosCreator Prefab(预制件)理解

相信很多朋友都不知道 Prefab 是什么&#xff1f;为什么要使用Prefab &#xff1f; 怎么使用Prefab&#xff1f; 接下来&#xff0c;我们就一步一步来揭晓答案。 一、Prefab 是什么 &#xff1f; Prefab&#xff1a;大家习惯性地称为“预制件” 或“预制体” &#xff0c;简单说…

Java事件机制简介 内含面试题

面试题分享 云数据解决事务回滚问题 点我直达 2023最新面试合集链接 2023大厂面试题PDF 面试题PDF版本 java、python面试题 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮…

昇腾Ascend TIK自定义算子开发教程(概念版)

一、参考资料 【2023 CANN训练营第一季】Ascend C算子开发入门&#xff08;中&#xff09; 二、重要说明 TIK2编程范式把算子核内的处理程序&#xff0c;分成多个流水任务&#xff0c;任务之间通过队列&#xff08;Queue&#xff09;进行通信和同步&#xff0c;并通过统一的…

MySQL——备份和还原

备份 热备 即MySQL服务在运行的时候进行的备份 mysqldump命令 mysqldump --databases db1 db2 db3 > dump.sql mysqldump -uroot -pSanchuang1234# --all-databases >all_db.sql mysqldump -uroot -pSanchuang123# --databases TENNIS >/backup/tennis.sql mysq…

分享一个python基于数据可视化的智慧社区服务平台源码

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人七年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、微信小程序、爬虫、大数据等&#xff0c;大家有这一块的问题可以一起交流&#xff01; &#x1…

【rust/egui】(九)使用painter绘制一些图形—基本使用

说在前面 rust新手&#xff0c;egui没啥找到啥教程&#xff0c;这里自己记录下学习过程环境&#xff1a;windows11 22H2rust版本&#xff1a;rustc 1.71.1egui版本&#xff1a;0.22.0eframe版本&#xff1a;0.22.0上一篇&#xff1a;这里 painter 定义pub struct Painter {///…

领域驱动设计:DDD分层架构

文章目录 DDD 分层架构DDD 分层架构最重要的原则DDD 分层架构推动架构演进三层架构如何演进到 DDD 分层架构 微服务架构模型有好多种&#xff0c;例如整洁架构、CQRS 和六边形架构等等。每种架构模式虽然提出的时代和背景不同&#xff0c;但其核心理念都是为了设计出“高内聚低…

gpt测试

已知a地一石头售价80&#xff0c;b地售价112&#xff0c;小明初始资金8000&#xff0c;在a地全仓购入后&#xff0c;去b地出售&#xff0c;然后小明又回到a地&#xff0c;再次全仓购入然后去b地出售&#xff0c;这样继续出售10次后&#xff0c;小明有多少钱&#xff1f;石头是不…

Java中wait和notify详解

线程的调度是无序的&#xff0c;随机的&#xff0c;但是也是有一定的需求场景&#xff0c;希望能够有序执行&#xff0c;join算是一种控制顺序的方式&#xff08;功能有限&#xff09;——》一个线程执行完&#xff0c;才能执行另一个线程&#xff01; 本文主要讲解的&#xf…

C++---类和对象

这里写目录标题 封装简介语法二级目录二级目录二级目录二级目录二级目录二级目录二级目录二级目录二级目录二级目录二级目录二级目录二级目录 封装 简介语法 类 &#xff1a;抽象的 共性的 对象&#xff1a;实例化的 具体的 个性的 封装 就是把属性和行为放在一起 加一些访问权…

CCRC-PIPA个人信息保护评估师

个人信息保护评估师 (Personal InformationProtec-tion Assessor&#xff0c;简称 “PIPA”) 是由中国网络安全审查技术与认证中心(简称CCRC) 推出的面向个人信息保护领域的培训认证。CCRC-PIPA课程以《个人信息保护法》、法规、部门规章、相关国家标准和行业最佳实践为基础&am…

代理IP在海外SEO优化中有哪些关键作用?

代理IP在海外SEO优化业务中的应用越来越受到企业的重视。它为企业提供了大量不同地区的IP地址&#xff0c;帮助企业模拟不同地区、不同设备的用户行为&#xff0c;有助于更准确地了解当地的搜索引擎规则和优化策略&#xff0c;更好地评估网站的排名和流量。 一、代理IP的优势 …

【Stable Diffusion XL】huggingface diffusers 官方教程解读

文章目录 01 TutorialDeconstruct a basic pipelineDeconstruct the Stable Diffusion pipelineAutopipelineTrain a diffusion model 相关链接&#xff1a; GitHub&#xff1a; https://github.com/huggingface/diffusers 官方教程&#xff1a;https://huggingface.co/docs/di…

第2章_瑞萨MCU零基础入门系列教程之面向过程与面向对象

本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写&#xff0c;需要的同学可以在这里获取&#xff1a; https://item.taobao.com/item.htm?id728461040949 配套资料获取&#xff1a;https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总&#xff1a; ht…

thinkphp6 入门(6)--中间件是什么 怎么用

一、什么是中间件&#xff1f; 当客户端发送请求至服务器时&#xff0c;HTTP请求会经过多个中间件&#xff0c;最后返回响应给客户端。中间件可以 在请求到达目标控制器或动作之前对请求进行操作 可以在响应离开目标控制器或动作之前对响应进行操作 二、中间件的作用 我们可…

【Python】conda虚拟环境下使用pyinstaller打包程序为exe

文章目录 一、为什么要用conda虚拟环境二、pyinstaller用法2.1 安装 PyInstaller2.2 基本用法打包一个 Python 脚本2.21 打包一个 Python 项目2.22 打包选项 2.3 打包依赖项2.31 导出依赖项列表2.32 配置依赖项 2.4 自定义打包选项2.5 打包完成后的文件2.6 注意事项 三、打包示…

RabbitMQ 知识点解读

1、AMQP 协议 1.1、AMQP 生产者的流转过程 当客户端与Broker 建立连接的时候&#xff0c;会调用factory .newConnection 方法&#xff0c;这个方法会进一步封装成Protocol Header 0-9-1 的报文头发送给Broker &#xff0c;以此通知Broker 本次交互采用的是AMQPO-9-1 协议&…