《Python 3 基础》- numpy的array,python的list、tuple的区别与联系再辨析
这里写自定义目录标题
- 一、基本认识
- 二、list与传统数组(以C++为例)的联系与区别
- 三、1维list切片规则
- 四、2维list类似于2维数组,但表达方式需适应
- 五、list与元组的联系与区别
- 1. tuple的创建方法类似于list,tuple用()表示
- 2. tuple增加元素的方法
一、基本认识
-
Python本身没用传统意义上的数组,但暂可把list看作数组(数组每个元素类型可以是任意的,不需要是同一类型),但是,也牺牲了数组的高效性
-
需要利用传统数组的高效性,可在Python中import numpy的array
接下来从操作层面先认识一下list、tuple与传统数组的联系与区别
二、list与传统数组(以C++为例)的联系与区别
C++:
数组声明:typeName arrayName[arraySize]
如:float loans[20]
如果取元素,最基础的方法就是,按下标来操作,如:
float loans1=loan[0] #提取first alement
认识:与list容易混淆的是都用[ ],也是联系之处,但是大部分语言基础的数组都不支持动态增加元素,C++实现动态数组,可借助一些技术方法。
Python的list:
Python中列表(list)是一种有序、可变且可重复元素集合。
在list中的数据类型保存的是数据的存放的地址,简单的说就是指针,并非数据,这样保存一个list就太麻烦了,例如list1=[1,2,3,‘a’]需要4个指针和四个数据(引自:https://www.php.cn/faq/424062.html)
(其它可参考:https://blog.csdn.net/www_djh/article/details/134645540?spm=1001.2014.3001.5502)
牺牲了效率,增加了灵活性:
以下是关于Python列表的常见基本操作示例
list示例:
>>> stus=['x','=',2,y] #不需声明,直接赋值
Traceback (most recent call last):File "<pyshell#0>", line 1, in <module>stus=['x','=',2,y]
NameError: name 'y' is not defined
>>> y=1
>>> stus=['x','=',2,y]
>>>
通过下标(index)取元素:
>>> y=1
>>> stus=['x','=',2,y]
>>> stus[0]
'x'
>>> stus[-1]
1
>>>
查看某元素值在list的个数
>>> stus.count(2)#因为直接输入元素本身,当本身是数值时,有时很难理解
1 #返回2这个元素出现了一次
>>>
查看某元素的index,若有多个仅返回第一个index
>>> stus.index(2) #元素2的index
3
>>>
在末端增加一个元素
>>> stus.append(10) #append每次只增加一个元素
>>> stus
['x', '=', 2, 1, 10]
>>>
>>> stus.append([11,12,13])
>>> stus
['x', '=', 2, 1, 10, [11, 12, 13]]
>>>
也可添加元组、集合等
>>> stus.append((11,12,13))
>>> stus
['x', '=', 2, 1, 10, [11, 12, 13], (11, 12, 13)]
>>> stus.append({11,12,13})
>>> stus
['x', '=', 2, 1, 10, [11, 12, 13], (11, 12, 13), {11, 12, 13}]
>>>
也可在指定下标处插入新值:
>>> stus.insert(0,3)
>>> stus
[3, 'x', '=', 2, 1, 10, [11, 12, 13], (11, 12, 13), {11, 12, 13}]
>>>
如果待插入的位置:正下标超出范围,则插在末端;负下标超出范围,则在最开始添加
删除最后一个元素:stus.pop()并返回被删除的元素
>>> stus.pop()
{11, 12, 13}
>>>
>>> stus.pop(1) #输入待删元素的index
'x'
>>>
用remove(元素),无返回
>>> stus
[3, '=', 2, 1, 10, [11, 12, 13], (11, 12, 13)]
>>> stus.remove(=)
SyntaxError: invalid syntax
>>> stus.remove("=")
>>> stus
[3, 2, 1, 10, [11, 12, 13], (11, 12, 13)]
>>>
用python 关键词(命令)del 删除某index的元素
>>> stus
[3, 2, 1, 10, [11, 12, 13], (11, 12, 13)]
>>> del stus[6]
Traceback (most recent call last):File "<pyshell#26>", line 1, in <module>del stus[6]
IndexError: list assignment index out of range
>>> del stus[5]
>>> stus
[3, 2, 1, 10, [11, 12, 13]]
>>>
其它:
>>> stus.sort() #该list元素类型不支持排序
Traceback (most recent call last):File "<pyshell#30>", line 1, in <module>stus.sort()
TypeError: '<' not supported between instances of 'list' and 'int'
>>>
倒序
>>> stus.reverse()
>>> stus
[[11, 12, 13], 10, 3, 2, 1]
>>>
清空
stus.clear()
三、1维list切片规则
如:>>> A
[‘a’, ‘b’, ‘a’, 60, 20]
则:A[::] 格式是 start_index:end_index:step
切片结果:包含 start_index元素,不包含end_index元素
因为step缺省为1,往往被省略所以常见A[:]
如: A[:] 取全list
A[:2] 从index=0取到index<2的元素
A[2:] 从index=2取到末尾
这个东东初学容易与字典混在一起:字典是包括在一对{ }内的
如:dict = {‘Alice’: ‘2341’, ‘Beth’: ‘9102’, ‘Cecil’: ‘3258’}
>>> dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
>>> dict['Alice'] #也容易与在dataframe中的使用搞混,好难啊
'2341'
>>>
四、2维list类似于2维数组,但表达方式需适应
C++:
二维数组声明:typeName arrayName[rowSize][columnSize]
如:float loans[2][2]
而二维的list:
stuts_sheet=[[‘a’,‘b’],[60,20]]
取元素:
>>> stuts_sheet[0][0]
'a'
>>>
取行:
>>> stuts_sheet[0]
['a', 'b']
>>>
好像只能用代码实现取列,而且,list每行元素可以不一样长
如:
>>> stuts_sheet[0].append('a')
>>> stuts_sheet
[['a', 'b', 'a'], [60, 20]]
>>>
extend可以把两个list合并
>>> A=stuts_sheet[0]
>>> B=stuts_sheet[1]
>>> A.extend(b)
Traceback (most recent call last):File "<pyshell#42>", line 1, in <module>A.extend(b)
NameError: name 'b' is not defined
>>> A.extend(B)
>>> A
['a', 'b', 'a', 60, 20]
>>>
五、list与元组的联系与区别
tuple一旦创建,它就不能改变了,也就是说它也没有 append(),insert() 这样的方法,但它也有获取某个索引值的方法,但是不能赋值。那么为什么要有 tuple 呢?那是因为 tuple 是不可变的,所以代码更安全。函数经常返回tuple。
1. tuple的创建方法类似于list,tuple用()表示
>>> tup=('aly',x)
>>> tup[1]
2
>>> x=[3]
>>> tup[1] #没修改成功
2
>>>
2. tuple增加元素的方法
list可以用自己的append()来添加元素。
Python元组是一种不可变的有序集合。
方法一:
在Python中,元组和字符串一样,支持“+”、“+=”运算符进行拼接操作。因此,可以通过将一个元组与一个元素的元组相加.
>>> t=(1,)
>>> t1=(a,b)
Traceback (most recent call last):File "<pyshell#3>", line 1, in <module>t1=(a,b)
NameError: name 'a' is not defined
>>> t1=('a','b')
>>> t2=t1+t
>>> t2
('a', 'b', 1)
>>>
方法二:
先转成list利用list的append增加元素,再转回tuple
>>> t2
('a', 'b', 1)
>>> list1=list(t2)
>>> list1.append(5)
>>> t3=tuple(list1)
>>> t3
('a', 'b', 1, 5)
>>>
方法三:
使用元组解包,这个方法的特点:可以把元组元素设成某个变量,添加进元组
>>> t3
('a', 'b', 1, 5)
>>> var=10
>>> t4=(*t3,var)
>>> t4
('a', 'b', 1, 5, 10)
>>>
相关文章:
《Python 3 基础》- numpy的array,python的list、tuple的区别与联系再辨析
这里写自定义目录标题 一、基本认识二、list与传统数组(以C为例)的联系与区别三、1维list切片规则四、2维list类似于2维数组,但表达方式需适应五、list与元组的联系与区别1. tuple的创建方法类似于list,tuple用(&#…...
写点东西《最佳 Web 框架不存在 》
写点东西《🥇最佳 Web 框架不存在 🚫》 TLDR;您选择的 Web 应用程序框架并不重要。嗯,它很重要,但并不像其他人希望您相信的那样重要。 2024 年存在如此多的库和框架,而且最好的库和框架仍然备受争议&…...
游戏开发丨基于PyGlet的简易版Minecraft我的世界游戏
文章目录 写在前面我的世界PyGlet简介实验内容游戏按键程序设计引入文件 运行结果写在后面 写在前面 本期内容:基于PyGlet的简易版Minecraft我的世界游戏 实验环境: pycharmpyglet 项目下载地址:https://download.csdn.net/download/m0_6…...
在线的货币兑换平台源码下载
在线的货币兑换平台,可帮助全球各地的个人和企业将货币从一种货币兑换为另一种货币。该货币兑换平台是 Codecanyon 中最先进的脚本。 源码下载:https://download.csdn.net/download/m0_66047725/88728084...
LLMs之GLM-4:GLM-4的简介、安装和使用方法、案例应用之详细攻略
LLMs之GLM-4:GLM-4的简介、安装和使用方法、案例应用之详细攻略 导读:2024年01月16日,智谱AI在「智谱AI技术开放日(Zhipu DevDay)」推出新一代基座大模型GLM-4。GLM-4 的主要亮点和能力如下:>> 性能与GPT-4相近:多模态、长文…...
用Python“自动连发消息”
自动连发消息,基本上C和Python的思路都是不停的模拟“击键”操作,还有一种VB的脚本写法,反成每种语言都能写,更厉害的可以用java做出个GUI界面,先上代码。 一 代码 import pyautogui # 鼠标 import p…...
CSS3中多列布局详解
多列布局 概念:在CSS3之前,想要设计类似报纸那样的多列布局,有两种方式可以实现:一种是"浮动布局",另一种是“定位布局”。 这两种方式都有缺点:浮动布局比较灵活,但不容易控制&…...
Xmind 网页端登录及多端同步
好久没用 Xmind 了,前几天登录网页端突然发现没办法登录了,总是跳转到 Xmind AI 页面。本以为他们不再支持网页端了,后来看提示才知道只是迁移到了新的网址,由原来的 xmind.works 现在改成了的 xmind.ai。又花费好长时间才重新登录…...
Transformer从菜鸟到新手(七)
引言 上篇文章加速推理的KV缓存技术,本文介绍让我们可以得到更好的BLEU分数的解码技术——束搜索。 束搜索 我们之前生成翻译结果的时候,使用的是最简单的贪心搜索,即每次选择概率最大的,但是每次生成都选择概率最大的并不一定…...
上海AI实验室等开源,音频、音乐统一开发工具包Amphion
上海AI实验室、香港中文大学数据科学院、深圳大数据研究院联合开源了一个名为Amphion的音频、音乐和语音生成工具包。 Amphion可帮助开发人员研究文本生成音频、音乐等与音频相关的领域,可以在一个框架内完成,以解决生成模型黑箱、代码库分散、缺少评估…...
加快网络安全事件响应速度的6个步骤
现代安全工具不断提高保护组织网络和端点免受网络犯罪分子侵害的能力。但坏人偶尔还是会找到办法进来。 安全团队必须能够阻止威胁并尽快恢复正常运行。这就是为什么这些团队不仅必须拥有正确的工具,而且还要了解如何有效地应对事件。可以自定义事件响应模板等资源…...
Docker 镜像的详解及创建(Dockerfile详解)
目录 镜像加载的原理 联合文件系统(UnionFS) 镜像结构的分层 Dockerfile Dockerfile结构 dockerfile常用命令 Dockerfile 编写规范 docker创建镜像的方法 基于现有镜像创建 示例: 基于本地模版创建 示例 基于Dockerfile 创建 示…...
JDBC事务
1.事务 数据库事务是一组数据库操作,它们被视为一个单一的逻辑工作单元,要么全部成功执行,要么全部回滚(撤销)到事务开始前的状态。事务是确保数据库数据一致性、完整性和可靠性的关键机制之一。 简单来说࿰…...
协方差矩阵自适应调整的进化策略(CMA-ES)
关于CMA-ES,其中 CMA 为协方差矩阵自适应(Covariance Matrix Adaptation),而进化策略(Evolution strategies, ES)是一种无梯度随机优化算法。CMA-ES 是一种随机或随机化方法,用于非线性、非凸函数的实参数(…...
gitee完整使用教程,创建项目并上传
目录 一 什么是gitee 二 安装Git 三 登录gitee,生成密钥 四 配置SSH密钥 五 创建项目 六 克隆仓库到本地 七 关联本地工程到远程仓库 八 添加文件 九 异常处理 十 删除仓储 十一 git常用命令 一 什么是gitee gitee是开源中国推出的基于git的代码托管服务…...
如何使用ActiveMQ详细讲解
ActiveMQ 是一款流行的消息中间件,支持多种通信协议和消息模式,包括点对点、发布/订阅、事务处理等。下面是使用 ActiveMQ 的基本步骤: 1. 下载和安装 ActiveMQ: • 前往 ActiveMQ 的官方网站(http://activemq.apach…...
【python入门】day28:记录用户登录日志
演示 代码 #-*- coding:utf-8 -*- print(记录用户登录日志----------------------------) import time def show_info():print(输入提示数字,执行相应操作:0退出,1查看登录日志) def write_logininfo(username):#----------记录日志with open(log.txt,a,encodingutf-8)as file…...
sqlserver2012 跨服务器查询
在 SQL Server 2012 中,跨服务器查询可以通过链接服务器来实现。以下是执行跨服务器查询的步骤: 创建链接服务器: 首先,你需要在 SQL Server 2012 上创建一个链接服务器对象。可以使用系统存储过程 sp_addlinkedserver 来完成这一…...
无人机视角、多模态、模型剪枝、国产AI芯片部署
无人机视角、多模态、模型剪枝、国产AI芯片部署是当前无人机技术领域的重要研究方向,其原理和应用价值在以下几个方面进行详细讲述。 一、无人机视角:无人机视角是指在无人机上搭载摄像头等设备,通过航拍图像获取环境信息,并进行…...
DaisyDisk for mac 中文激活版 可视化磁盘清理工具
DaisyDisk 是一款专为 Mac 设计的磁盘空间分析工具。它以直观、图形化的方式展示硬盘使用情况,帮助用户迅速找到占用空间大的文件和文件夹。通过扫描磁盘,DaisyDisk 生成彩色的扇形图表,每个扇区代表一个文件或文件夹,大小直观反映…...
通过Taotoken用量看板分析团队月度大模型API消费明细
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken用量看板分析团队月度大模型API消费明细 对于团队管理者而言,清晰、透明地掌握大模型API的消费情况是项目…...
JEECG-Boot接口幂等性架构深度解析:Token机制与分布式锁实战指南
JEECG-Boot接口幂等性架构深度解析:Token机制与分布式锁实战指南 【免费下载链接】jeecg-boot AI 低代码平台,「低代码 零代码」双模式驱动:低代码一键生成前后端代码,零代码 5 分钟搭建系统,AI Skills 一句话画流程、…...
终极指南:5步掌握.NET Core Mod加载器Reloaded-II的完整使用方法
终极指南:5步掌握.NET Core Mod加载器Reloaded-II的完整使用方法 【免费下载链接】Reloaded-II Universal .NET Core Powered Modding Framework for any Native Game X86, X64. 项目地址: https://gitcode.com/gh_mirrors/re/Reloaded-II 你是否厌倦了手动复…...
第七章 指令微调学习(五)Extracting and saving responses
第七章 指令微调学习(五) 7.7 Extracting and saving responses 在对指令数据集的训练部分完成LLM的微调后,现在评估其在保留测试集上的性能。首先,我们提取测试集中每个输入对应的模型生成响应并进行人工分析;随后通过…...
ESXi勒索防护实战:堵住配置天窗,构建三层纵深防御
1. 这不是“又一起”勒索事件,而是ESXi生态链断裂的警报 2023年底开始,全球范围内大量VMware ESXi服务器被植入名为 ESXiArgs (也称 KPOT )的勒索软件,攻击波及金融、医疗、教育、制造等数十个行业。这不是传统意义…...
体验Taotoken的模型广场如何辅助开发者快速选型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 体验Taotoken的模型广场如何辅助开发者快速选型 对于需要接入大模型能力的开发者而言,面对市场上众多的模型提供商和复…...
从XML-RPC到gRPC:一个老派RPC协议如何影响了今天的微服务通信设计
从XML-RPC到gRPC:技术演进中的通信范式变迁 二十年前,当Dave Winer和Microsoft首次提出XML-RPC协议时,他们可能不会想到这个简单的远程调用机制会成为现代微服务架构的启蒙。在1998年的技术背景下,XML-RPC以其基于HTTP和XML的简洁…...
5分钟搞定B站视频下载:免费解锁大会员4K高清画质
5分钟搞定B站视频下载:免费解锁大会员4K高清画质 【免费下载链接】bilibili-downloader B站视频下载,支持下载大会员清晰度4K,持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 还在为无法离线观看B站精…...
Mac应用彻底清理指南:使用Pearcleaner免费开源工具释放存储空间
Mac应用彻底清理指南:使用Pearcleaner免费开源工具释放存储空间 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 你是不是经常发现Mac电脑的存储空…...
混合基FFT,matlab实现
参考数字信号处理教程第四版(程佩青著)第四章FFT这里直接给出matlab函数,性能不保证最优注意,此函数只能处理混合基fft,即输入信号x的长度不能是素数,不能是2次幂整数function X mixedRadixFFT(x)% multiB…...
