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

news2024/10/13 6:13:57

目录

一、前言

二、实验环境

三、Python容器

0. 容器介绍

1. 列表

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/992597.html

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

相关文章

【漏洞复现】Tenda路由器存在密码泄露

漏洞描述 腾达W15E路由器外置4根增强型360全向天线&#xff0c;苛刻调校到0.01毫米级的零干扰间距&#xff0c;科学独立布局的信号放大器PA&#xff0c;穿墙性能更强劲&#xff0c;覆盖范围更广&#xff0c;在哪都有好信号。 该型号的路由器系统存在密码泄露漏洞&#xff0c;…

【MySQL】聊聊数据库高可用

对于任何一个互联网公司来说&#xff0c;必定涉及到存储系统&#xff0c;而一般主流的使用MySQL进行存储数据&#xff0c;但是如果只是部署一台数据库&#xff0c;数据丢失的话&#xff0c;其实没有办法进行有效的恢复&#xff0c;那么就会造成一定的损失。要么就是直接的损失&…

pc端字体为什么到12像素以后不生效

pc端字体为什么到12像素以后不生效&#xff1f; 因为谷歌浏览器默认的最小字体是12像素&#xff0c;如果去‘设置’里面修改最小字体&#xff0c;是可以达到修改效果的&#xff0c;但是&#xff0c;你不能解决用户的浏览器设置 解决办法如下 <p class"font">…

SG-Former:具有进化Token重新分配的自引导Transformer

摘要 https://arxiv.org/pdf/2308.12216.pdf Vision Transformer在各种视觉任务中展示了令人印象深刻的成功。然而&#xff0c;其沉重的计算成本相对于Token序列长度呈二次增长&#xff0c;在很大程度上限制了其处理大型特征映射的能力。为了降低计算成本&#xff0c;以往的研…

华为云云耀云服务器L实例评测|服务器实例基础使用实践

&#x1f996;我是Sam9029&#xff0c;一个前端 Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 **&#x1f431;‍&#x1f409;&#x1f431;‍&#x1f409;恭喜你&#xff0c;若此文你认为写的不错&#xff0c;不要吝啬你的赞扬&#xff0c;求…

常见的图像格式介绍:RAW、RGB、YUV

常见的图像格式有RAW、RGB、YUV这三大类 1. RAW raw图像指的是sensor输出的原始数据&#xff0c;常见的有8位、10位、12位之分&#xff0c;分别表示一个像素点所占的字节数为8bit、10bit、12bit。 raw数据常见的有四种Bayer模式&#xff1a;GRBG、RGGB、BGGR&#xff08;下图…

苹果计划2024年AirPods引入新接口,后续升级体温测量、听力测试

据彭博社马克・古尔曼&#xff08;Mark Gurman&#xff09;报道&#xff0c;苹果公司计划在最早2024年为其旗舰无线耳机AirPods和AirPods Max引入USB-C端口&#xff0c;并试图将其所有基于Lightning接口的配件改用USB-C接口。 据古尔曼表示&#xff0c;AirPods Pro将率先改用新…

学校ROS培训项目记录

项目内容&#xff1a; 在linux上安装ROS&#xff08;可以使用虚拟机&#xff09;编写ROS程序&#xff0c;实现话题的订阅和发布基于松灵小车硬件&#xff0c;显示雷达数据、图像数据移动松灵小车&#xff0c;绘制小车的运动轨迹 实现过程记录 1.ubuntu22.04上安装ros2 ubun…

Cookie、Session、Token、JWT

文章目录 1. 认证(Authentication) & 授权(Authorization) & 凭证(Credentials)1.1 认证(Authentication)1.2 授权(Authorization)1.3 凭证(Credentials) 2. Cookie & Session2.1 什么是 Cookiecookie 重要的属性 2.2 什么是 Session2.3 Cookie 和 Session 的区别 …

来看看Python编码规范(PEP 8)

在讲解具体的​ Python 编 ​码规范之前&#xff0c;先来看看图 1 中的代码&#xff1a; 图 1 两段功能相同的 Python 代码 对比图 1 中的两段代码你会发现&#xff0c;它们所包含的代码时完全相同的&#xff0c;但很明显&#xff0c;右侧的代码编写格式看上去比左侧的代码段更…

VR桥梁应用:实现可视化的桥梁监控

在过去的几年中&#xff0c;虚拟现实(VR)技术已经在多个领域得到了广泛的应用。其中&#xff0c;桥梁巡检是一个特别有前景的应用领域。利用VR技术&#xff0c;我们可以创建一个安全、高效的桥梁巡检方式&#xff0c;帮助工程师和维护人员更好地理解和评估桥梁的状态。 通过VR设…

Mac电脑使用万能头文件教程(详细)

参考:https://blog.csdn.net/weixin_46522531/article/details/126292477 预计阅读操作时间&#xff1a;5分钟 Mac电脑由于使用的是苹果自己的编译器&#xff0c;很多头文件不支持&#xff0c;像万能头就是其中的一员。万能头可以为我们节省很多时间&#xff0c;减少很多不必要…

企业架构LNMP学习笔记28

企业架构LNMP高可用负载均衡服务器之Nginx&#xff1a; 1&#xff09;能够描述负载均衡的作用&#xff1b;loadbalance LB。 2&#xff09;能够了解负载均衡常见的实现方式&#xff1b; 3&#xff09;能够使用nginx实现负载均衡&#xff1b; 4&#xff09;能够描述nginx的常…

OpenCV DNN神经网络部署流程

&#x1f482; 个人主页:风间琉璃&#x1f91f; 版权: 本文由【风间琉璃】原创、在CSDN首发、需要转载请联系博主&#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 目录 前言 一、加载网络模型 二、构建输入 三、执行推理 四、解析输出 前言…

公开游戏、基于有向图的游戏

目录 〇&#xff0c;背景 一&#xff0c;公开游戏、策梅洛定理 1&#xff0c;公开游戏 2&#xff0c;策梅洛定理 二&#xff0c;有向图游戏 1&#xff0c;狭义有向图游戏 2&#xff0c;广义有向图游戏 3&#xff0c;狭义有向图游戏的SG数 4&#xff0c;Bash Game 力扣…

【List篇】使用Arrays.asList生成的List集合,操作add方法报错

早上到公司&#xff0c;刚到工位&#xff0c;测试同事就跑来说"功能不行了&#xff0c;报服务器异常了&#xff0c;咋回事";我一脸蒙&#xff0c;早饭都顾不上吃&#xff0c;要来了测试账号复现了一下&#xff0c;然后仔细观察测试服务器日志&#xff0c;发现报了一个…

【C语言】错题本(3)

题目: 为了方便分析,我们将题目代码贴在下面: int main() {unsigned char puc[4];struct tagPIM{unsigned char ucPim1;unsigned char ucData0 : 1;unsigned char ucData1 : 2;unsigned char ucData2 : 3;}*pstPimData;pstPimData (struct tagPIM*)puc;memset(puc,0,4);pstPi…

【计算机网络】HTTP(上)

文章目录 1.HTTP概念2. URLurlencode 和 urldecode转义规则 3. HTTP的宏观理解HTTP的请求HTTP的响应 4. 见一见HTTP请求和响应请求报头 1. 模拟一个简单的响应response响应报头 2. 从路径中获取内容ReadFile函数的实现 3.不同资源进行区分反序列化的实现ReadOneLine函数的实现P…

VUE3+JAVA商城源码小程序APP商城

三勾小程序商城基于springbootelement-uiuniapp打造的面向开发的小程序商城&#xff0c;方便二次开发或直接使用&#xff0c;可发布到多端&#xff0c;包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 软件架构 后端&a…

多维时序 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络的多变量时间序列预测

多维时序 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络的多变量时间序列预测 目录 多维时序 | MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神经网络的多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现GWO-LSTM灰狼算法优化长短期记忆神…