【深度学习】 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)
相关文章:
【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)
目录 一、前言 二、实验环境 三、Python容器(Containers) 0、容器介绍 1、列表(List) 1. 初始化 a. 创建空列表 b. 使用现有元素初始化列表 c. 使用列表生成式 d. 复制列表 2. 索引和切片 a. 索引 b. 负数索引 c. 切…...
【C++笔记】C++string类模拟实现
【C笔记】Cstring类模拟实现 一、实现模型和基本接口1.1、各种构造和析构1.2、迭代器 二、各种插入和删除接口2.1、插入接口2.2、删除接口2.3、resize接口 三、各种运算符重载3.1、方括号运算符重载3.2、各种比较运算符重载 四、查找接口4.1、查找字符4.2、查找子串 五、流插入…...
操作系统之课后习题——引论
(一)简答题 1.在计算机系统上配置OS的目标是什么?作用主要表现在哪几个方面? 答: 在计算机系统上配置OS,主要目标是实现:方便性、有效性、可扩充性和开放性; OS的作用主要表现在以下…...
【PHP代码审计】反序列化漏洞实战
文章目录 概述资源下载地址Typecho代码审计-漏洞原理call_user_func()_applyFilter()、get()与__get__toString()__construct()install.php POC利用漏洞利用复现利用链执行phpinfo()GET利用POST利用 getshell生成payload漏洞利用蚁剑连接 总结 概述 序列化,“将对象…...
Socks5 与 HTTP 代理在网络安全中的应用
目录 Socks5和HTTP代理在网络安全中的应用。 Socks5代理和HTTP代理的优点和缺点。 选择合适的代理IP需要考虑的因素: 总结 在网络安全领域中,Socks5和HTTP代理都扮演着重要的角色。作为两种不同的代理技术,它们在网络安全中的应用各有特点…...
进阶C语言-指针的进阶(中)
指针的进阶 📖5.函数指针📖6.函数指针数组📖7.指向函数指针数组的指针📖8.回调函数 📖5.函数指针 数组指针 - 指向数组的指针 - 存放的是数组的地址 - &数组名就是数组的地址。 函数指针 - 指向函数的指针 - 存放的…...
保姆级-微信小程序开发教程
一,注册微信小程序 如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信,我们选择 “小程序” 即可。 接着填写账号信息&#x…...
数据库-DQL
DQL:用来查询数据库表中的记录 关键字:SELECT 语法: select:字段列表 from:表名列表 where:条件列表 group by:分组列表 having:分组后条件列表 order by:排序字段列表…...
19 螺旋矩阵
螺旋矩阵 题解1 循环(4个标志——根据顺时针)题解2 方向 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 提示: - m matrix.length - n matrix[i].length - 1 < m, n <…...
数据结构与算法:概述
目录 算法 评价标准 时间的复杂度 概念 推导原则 举例 空间的复杂度 定义 情形 运用场景 数据结构 组成方式 算法 在数学领域,算法是解决某一类问题的公式和思想; 计算机科学领域,是指一系列程序指令,用于解决特定的…...
顺序表详解
💓 博客主页:江池俊的博客⏩ 收录专栏:数据结构探索👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🔥编译环境:Visual Studio 2022Ἰ…...
基于RabbitMQ的模拟消息队列之六——网络通信设计
自定义基于TCP的应用层通信协议。实现客户端对服务器的远程调用 编写服务器及客户端代码 文章目录 基于TCP的自定义应用层协议一、请求1.请求格式2.创建Request类 二、响应1.响应格式2.创建Response类 三、客户端-服务器交互四、type五、请求payload1.BasicAruguments(方法公共…...
算法:数组中的最大差值---“打擂台法“
文章来源: https://blog.csdn.net/weixin_45630258/article/details/132737088 欢迎各位大佬指点、三连 1、题目: 给定一个整数数组 nums,找出给定数组中两个数字之间的最大差值。要求,第二个数字必须大于第一个数字。 2、分析特…...
三种方式查看 JVM 垃圾收集器
一、引言 不同版本的 JVM 默认使用的垃圾收集器是不同的,目前的新生代和老年代的垃圾收集器如下图所示,新生代和老年代之间的连线表示这些垃圾收集器可以进行搭配使用 垃圾收集器的名字和 JVM 里面的参数对照表如下,即在 JVM 里面并不是存储的…...
React中函数式组件与类组件有何不同?
Function Component 与 Class Component 有何不同 目录 Function Component 与 Class Component 有何不同 文章核心观点: 解释一下: 总结: 文章核心观点: Function components capture the rendered values.函数式组件捕获…...
windows11安装docker时,修改默认安装到C盘
1、修改默认安装到C盘 2、如果之前安装过docker,请删除如下目录:C:\Program Files\Docker 3、在D盘新建目录:D:\Program Files\Docker 4、winr,以管理员权限运行cmd 5、在cmd中执行如下命令,建立软联接: m…...
python模块之 aiomysql 异步mysql
mysql安装教程 mysql语法大全 python 模块pymysql模块,连接mysql数据库 一、介绍 aiomysql 是一个基于 asyncio 的异步 MySQL 客户端库,用于在 Python 中与 MySQL 数据库进行交互。它提供了异步的数据库连接和查询操作,适用于异步编程环境 …...
开开心心带你学习MySQL数据库之第八篇
索引和事务 ~~ 数据库运行的原理知识 面试题 索引 索引(index) > 目录 索引存在的意义,就是为了加快查找速度!!(省略了遍历的过程) 查找速度是快了,但是付出了一定的代价!! 1.需要付出额外的空间代价来保存索引数据 2.索引可能会拖慢新增,删除,修改的速度 ~~ …...
yml配置动态数据源(数据库@DS)与引起(If you want an embedded database (H2, HSQL or Derby))类问题
1:yml 配置 spring:datasource:dynamic:datasource:master:url: jdbc:mysql://192.168.11.50:3306/dsdd?characterEncodingUTF-8&useUnicodetrue&useSSLfalse&tinyInt1isBitfalse&allowPublicKeyRetrievaltrue&serverTimezoneUTCusername: ro…...
yolov5运行过程遇到的小问题(随时更新)
1.关于git的问题 解决办法:插入下面代码 import os os.environ["GIT_PYTHON_REFRESH"] "quiet"2.页面太小无法完成操作 解决办法: 如果不好使再考虑降低Batch_Size大小或者调整虚拟内存可用硬盘空间大小!(调整虚拟内存…...
使用FabricJS创建Image对象的JSON表示
本篇文章介绍一下如何创建图像的 JSON 表示形式 使用 FabricJS 的对象。我们可以通过创建一个实例来创建一个 Image 对象 织物.图像。由于它是FabricJS的基本元素之一,我们也可以轻松地 通过应用角度、不透明度等属性来自定义它。为了创建 JSON Image 对象的表示&am…...
【牛客刷题】反转固定区间链表、每k个节点一组反转
链表内指定区间反转_牛客题霸_牛客网 ListNode* reverseList(ListNode* head, ListNode* tail) {ListNode* pre nullptr;ListNode* cur head;while (cur ! tail) { 最后cur就是tailListNode* temp cur->next;cur->next pre;pre cur;cur temp;}return pre;}ListNode…...
算法:数组常见套路1---双指针、取模、打擂台法
文章来源: https://blog.csdn.net/weixin_45630258/article/details/132738318 欢迎各位大佬指点、三连 一、数组的合并–双指针[快慢指针] 1、题目: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ࿰…...
App 出海实践:Google Play 结算系统
作者:业志陈 现如今,App 出海热度不减,是很多公司和个人开发者选择的一个市场方向。App 为了实现盈利,除了接入广告这种最常见的变现方式外,就是通过提供各类虚拟商品或者是会员服务来吸引用户付费了,此时 …...
国际慈善日 | 追寻大爱无疆,拓世科技集团的公益之路
每年的9月5日,是联合国大会正式选定的国际慈善日。这一天的设立,旨在通过提高公众对慈善活动的意识,鼓励慈善公益活动通过各种形式在全球范围内得到增强和发展。这是一个向慈善公益事业致敬的日子,同时也是呼吁全球团结一致共同发…...
关于DNS的一些认识
目录 什么是DNS? 一台具有单个DNS的机器可以拥有多个地址吗? 一台计算机可以有多个属于不同顶级域的DNS名字吗? 什么是DNS? DNS是域名系统(Domain Name System)的缩写,它是互联网中用于将域名…...
游戏性能优化
Unity性能优化主要包括以下方面: 1.渲染性能 。包括减少Draw Calls、减少三角面数、使用LOD、使用批处理技术、减少实时光源等,以提高游戏的帧率和渲染效率。 2.内存性能 。包括使用对象池、使用合适的纹理、使用异步加载资源等,以减少内存占…...
公开游戏、基于有向图的游戏
目录 〇,背景 一,公开游戏、策梅洛定理 1,公开游戏 2,策梅洛定理 二,有向图游戏 1,狭义有向图游戏 2,广义有向图游戏 3,狭义有向图游戏的SG数 4,Bash Game 力扣…...
CSS学习笔记05
CSS笔记05 定位 position CSS 属性position - 用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。position 有以下常用的属性值: position: static; - 默认值。指定元素使用正常的布局行为&am…...
Linux查看指定端口是否被占用
在Linux中,可以使用多种方法来检查一个特定端口(例如3306,通常由MySQL使用)是否被占用: 使用netstat命令: 如果系统中已安装了netstat,可以使用以下命令检查3306端口: netstat -tuln | grep 330…...
网站怎么收录/长沙优化排名推广
Tab 使选中的代码向右 Shift Tab 使选中的代码向左...
舟山网站建设优化/今日油价92汽油价格表
返回目录 建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC何尝不是,我们的MVVM又何尝不是呢,我们做软件的,换肤是常有的事,其实换肤的实现不就是建…...
app商城系统定制开发/seo入门免费教程
1、解压缩tar.gz包后 2、进目录 /bin/startup.sh 启动 注:如果启动时间过长,则修改 本机如果无法访问虚拟机tomcat,则关闭防火墙 1、查看防火墙状态 /etc/init.d/iptables status 2、临时关闭防火墙 /etc/init.d/iptables stop 3、永久…...
百度只收录wordpress/上海疫情突然消失的原因
k-means聚类算法描述 1、假定我们要对N个样本观测做聚类,要求聚为K类,首先选择K个点作为初始中心点; 2、接下来,按照距离初始中心点最小的原则,把所有观测分到各中心点所在的类中; 3、每类中有若干个观测&…...
单页网站做淘宝客/百度首页排名优化多少钱
return beanInstance; } Object object null; //mbd即beanDefinition为空,从缓存中取 if (mbd null) { object getCachedObjectForFactoryBean(beanName); } //缓存中没有,则调用FactoryBean的getObject方法,返回其对象 if (objec…...
网站 关键词 挖掘/东莞seo推广机构帖子
NH2-UiO-66|CAS号1260119-00-3金属有机骨架 材料名称:NH2-UIO-66(Zr) 其他名称:NA CAS:1260119-00-3 结构信息 单位分子式 C48H5N6O32Zr6 单位分子量 1724.92 配位金属 Zr 配体 2-氨基对苯二甲酸(CAS:10312-55-7&…...