Python中容器类型的数据
目录
序列
序列的索引操作
加和乘操作
切片操作
成员测试
列表
创建列表
追加元素
插入元素
替换元素
删除元素
元组
创建元组
元组拆包
集合
创建集合
修改集合
字典
创建字典
修改字典
访问字典视图
遍历字典
若我们想将多个数据打包并且统一管理,应该怎么办? Python内置的数据类型如序列(列表、元组等)、集合和字典等可以容纳多项数据,我们称它们为容器类型的数据。
序列
序列是一种可迭代的、元素有序的容器类型的数据。序列包括列表(list)、字符串(str)、元组(tuple)和字节序列(bytes)等。
序列的索引操作
序列中的元素都是有序的,每一个元素都带有序号,这个序号叫作索引。索引有正值索引和负值索引之分。
序列示例:Hello字符串


>>>a='Hello'
>>>a[0]
'H'
>>>a[-5]
'H'
>>>max(a) # max()函数返回最后一个元素
'o'
>>>min(a) # min()函数返回第一个元素
'H'
>>>len(a) # len()函数用于获取序列的长度
5
加和乘操作
加(+)和乘(*)运算符也可以用于序列中的元素操作。加(+) 运算符可以将两个序列连接起来,乘(*)运算符可以将两个序列重复多次。
>>>a='Hello'
>>>a*2
'HelloHello'
>>>a='Hello'+','
'Hello,'
>>>a+='World'
>>>a
'Hello,World'
切片操作
序列的切片(Slicing)就是从序列中切分出小的子序列。切片运算符的语法形式为[start:end:step]。其中,start是开始索引 ,end是结束索引,step是步长(切片时获取的元素的间隔,可以为正整数,也可以为负整数)。
注意:切下的小切片包括start位置的元素,但不包括end位置的元素 ,start和end都可以省略。
>>>a='Hello'
>>>a[1:3]
'el'
>>>a[:3]//省略了开始索引,默认开始索引为0,所以a[:3]和a[0:3]的切片结果是一样的
'Hel'
>>>a[0:3]
'Hel'
>>>a[0:]//省略了结束索引,默认结束索引是序列的长度,即5.所以a[0:]与a[0:5]的切片结果是一样的
'Hello'
>>>a[0:5]
'Hello'
>>>a[:]//省略了开始索引和结束索引
'Hello'
>>>a[1:-1]//使用了负值索引
'ell'
当步长不为1时
>>>a='Hello'
>>>a[1:5]
'ello'
>>>a[1:5:2]
'el'
>>>a[0:3:2]
'Hl'
>>>a[0:3:3]
'H'
成员测试
成员测试运算符有两个:in和not in,in用于测试是否包含某一个元素,not in用于测试是否不包含某一个元素。
>>>a='Hello'
>>>'e' in a
True
>>>'E' not in a
True
列表
列表(list)是一种可变序列类型,我们可以追加、插入、删除和替换列表中的元素。
创建列表
创建列表有两种方法。
1 list(iterable)函数:参数iterable是可迭代对象(字符串、列表、 元组、集合和字典等)。
2 [元素1,元素2,元素3,⋯]:指定具体的列表元素,元素之间以逗号分隔,列表元素需要使用中括号括起来。
>>>[20,10,50,30]
[20,10,50,30]
>>>[] # 创建空列表
[]
>>>['Hello','World',1,2,3] # 创建一个字符串和整数混合的列表
['Hello','World',1,2,3]
>>>a=[10]
>>>a
[10]
>>>a[10,] # 列表的每一个元素后面都跟着一个逗号,但经常省略这个逗号
>>>a
[10]
>>>list('Hello')
['H','e','l','l','o']
追加元素
列表是可变的序列对象,列表可以追加元素。
1 在列表中追加单个元素时,可以使用列表的append(x)方法。
2 在列表中追加多个元素时,可以使用加(+)运算符或列表的extend(x)方法。
>>>list=[20,10,50,30]
>>>list.append(80)
>>>list
[20,10,50,30,80]
>>>list=[20,10,50,30]
>>>t=[1,2,3]
>>>list+=t
>>>list
[20,10,50,30,1,2,3]
>>>list=[20,10,50,30]
>>>list.extend(t)
>>>list
[20,10,50,30,1,2,3]
插入元素
想向列表中插入元素时,可以使用列表的list.insert(i,x)方法, 其中,i指定索引位置,x是要插入的元素。
>>>list=[20,10,50,30]
>>>list.insert(2,80)
>>>list
[20,10,80,50,30]
替换元素
想替换列表中的元素时,将列表下标索引元素放在赋值符号(=) 的左边,进行赋值即可。
>>>list=[20,10,50,30]
>>>list[1]=80
>>>list
[20,80,50,30]
删除元素
想在列表中删除元素时,可使用列表的list.remove(x)方法,如果找到匹配的元素x,则删除该元素,如果找到多个匹配的元素,则只删除第一个匹配的元素。
>>>list=[20,10,80,50,30]
>>>list.remove(80)
>>>list
[20,10,50,30]
元组
元组(tuple)是一种不可变序列类型。
创建元组
创建元组时有两种方法。
1 tuple(iterable)函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
2 (元素1,元素2,元素3,⋯):指定具体的元组元素,元素之间以逗号分隔。对于元组元素,可以使用小括号括起来,也可以省略小括号。
>>>21,32,43,45 # 创建一个有4个元素的元组,创建元组时使用小括号把元素括起来或省略
(21,32,43,45)
>>>('Hello','World') # 创建字符串元组
('Hello','World')
>>>('Hello','World',1,2,3) # 创建字符串和整数混合的元组
('Hello','World',1,2,3)
>>>tuple([21,32,43,45])
(21,32,43,45)
>>>t=1, # 创建只有一个元素的元组,元素后面的逗号不能省略
>>>t
(1,)
>>>type(t)
<class 'tuple')
>>>t=(1,)
>>>type(t)
<class 'tuple'>
>>>a=() # 通过()可以创建空元组
>>>type(a)
<class 'tuple'>
元组拆包
创建元组,并将多个数据放到元组中,这个过程被称为元组打包。与元组打包相反的操作是拆包,就是将元组中的元素取出,分别赋值给不同的变量。
>>>s_id,s_name=(102,'张三')
>>>s_id
102
>>>s_name
'张三'
集合
集合(set)是一种可迭代的、无序的、不能包含重复元素的容器类型的数据。
创建集合
序列中的元素是有序的,集合中的元素是无序的,但集合中的元素不能重复。
我们可以通过以下两种方式创建集合。
1 set(iterable)函数:参数iterable是可迭代对象(字符串、列表、 元组、集合和字典等)。
2 {元素1,元素2,元素3,⋯}:指定具体的集合元素,元素之间以逗号分隔。对于集合元素,需要使用大括号括起来。
>>>set('Hello')
{'o','H','e','l'}
>>>{20,15,10,30,20,15}
{10,20,30,15}
>>>b={}
>>>type(b)
<class 'set'>
修改集合
修改集合类似于修改列表,可以向其中插入和删除元素。修改可变集合有如下的常用方法。
add(elem):添加元素,如果元素已经存在,则不能添加,不会抛出错误。
remove(elem):删除元素,如果元素不存在,则抛出错误。
clear():清除集合。
>>>s_set={'张三','李四','王五'}
>>>s_set.add('董六')
>>>s_set
{'王五','张三','李四','董六'}
>>>s_set.remove('李四')
>>>'李四' in s_set
False
>>>s_set.clear()
>>>S_set
set()
字典
字典(dict)是可迭代的、通过键(key)来访问元素的可变的容器类型的数据。
字典由两部分视图构成:键视图和值视图。键视图不能包含重复的元素,值视图能。在键视图中,键和值是成对出现的。
创建字典
我们可以通过以下两种方法创建字典。
1 dict()函数。
2 {key1:value1,key2:value2,...,key_n:value_n}:指定具体的字典键值对,键值对之间以逗号分隔,最后用大括号括起来。
>>>dict({102:'张三',105:'李四',109:'王五'}) # 通过dict()函数创建字典,参数是另外一个字典
{102:'张三',105:'李四',109:'王五'}
>>>dict(((102:'张三'),(105:'李四'),('109:'王五'))) # 通过dict()函数创建字典,参数是一个元组,在这个元组中包含三个只有两个元素的元组
{102:'张三',105:'李四',109:'王五'}
>>>dict([(102,'张三'),(105,'李四'),(109,'王五')]) # 通过dict()函数创建字典,参数是一个列表,在这个列表中包含三个只有两个元素的元组
{102:'张三',105:'李四',109:'王五'}
>>>dict(zip([102,105,109],['张三','李四','王五'])) # 通过zip()函数将两个可迭代对象打包成元组,第一个参数是字典的键,第二个参数是字典值,它们包含的元素个数相同,并且一一对应
{102:'张三',105:'李四',109:'王五'}
>>>dict1={102:'张三',105:'李四',109:'王五'}
>>>dict1
{102:'张三',105:'李四',109:'王五'}
修改字典
字典可以被修改,但都是针对键和值同时操作的,对字典的修改包括添加、替换和删除。
>>>dict1={102:'张三',105:'李四',109:'王五'}
>>>dict[109] # 通过字典键返回对应的值
'王五'
>>>dict[110]='董六' # 通过110键赋值,如果此时在字典中没有110键,则添加110:'董六'键值对
>>>dict1
{102:'张三',105:'李四',109:'王五',110:'董六'}
>>>dict1[109] # 将109键对应的值替换为'张三'
>>>dict1
{102:'张三',105:'李四',109:'张三',110:'董六'}
>>>dict1.pop(105) # 使用字典的pop(key)方法删除键值对,返回删除的值
'李四'
>>>dict1
{102:'张三',109:'张三',110:'董六'}
访问字典视图
我们可以通过字典中的三种方法访问字典视图。
items():返回字典的所有键值对视图。
keys():返回字典键视图。
values():返回字典值视图。
>>>dict1={102:'张三',105:'李四',109:'王五'}
>>>dict1.items()
dict_items([(102:'张三'),(105:'李四'),(109:'王五')])
>>>list(dict1.items())
[(102,'张三'),(105,'李四'),(109,'王五')]
>>>dict1.keys()
dict_keys([102,105,109])
>>>list(dict1.keys())
[102,1055,109]
>>>dict1.values()
dict_values(['张三','李四','王五'])
>>>list(dict1.values())
['张三','李四','王五']
遍历字典
遍历就是从容器中取出每一个元素的过程,在进行序列和集合遍历时使用for循环就可以。但字典有两个视图,在遍历时,可以只遍历值视图,也可以只遍历键视图,还可以同时遍历,这些便利都是通过for循环实现的。
s_dict={102:'张三',105:'李四',109:'王五'}
print('---遍历键---')
for s_id in s_dict.keys():print('学号:'+str(s_id))
print('---遍历值---')
for s_name in s_dict.values():print('学生:'+s_name)
print('---遍历键:值---')
for s_id,s_name in s_dict.items():print('学号:{0}-学生:{1}'.format(s_id,s_name))
输出
---遍历键---
学号:102
学号:105
学号:109
---遍历值---
学生:张三
学生:李四
学生:王五
---遍历键:值---
学号:102-学生:张三
学号:105-学生:李四
学号:109-学生:王五相关文章:
Python中容器类型的数据
目录 序列 序列的索引操作 加和乘操作 切片操作 成员测试 列表 创建列表 追加元素 插入元素 替换元素 删除元素 元组 创建元组 元组拆包 集合 创建集合 修改集合 字典 创建字典 修改字典 访问字典视图 遍历字典 若我们想将多个数据打包并且统一管理&…...
虚拟机安装Centos8.5
记得看目录哦! 附件1. 新建虚拟机2. 安装Centos8.5 附件 安装包自行下载 https://mirrors.aliyun.com/centos/8/isos/x86_64/ 1. 新建虚拟机 2. 安装Centos8.5 启动虚拟机–选择第一个install Centos8.5 记得接收许可证...
ENVI下基于知识决策树提取地表覆盖信息
基于知识的决策树分类是基于遥感影像数据及其他空间数据,通过专家经验总结、简单的数学统计和归纳方法等,获得分类规则并进行遥感分类。分类规则易于理解,分类过程也符合人的认知过程,最大的特点是利用的多源数据。 决策树分类主要的工作是获取规则,本文介绍使用CART算法…...
arco design table遇到的一些问题
问题1:不知情就成了树形table table中不知道为啥就多了个树形加号在前面,查找问题后发现,是后端返回的数据中有children,框架中默认对这个参数做了树形结构。 解决办法: 当时没找到取消或者修改字段的属性或方法&…...
Linux系统——文本三剑客
目录 一、grep 1.格式 2.选项 2.1 grep重定向 2.2grep -m 匹配到几次停止 2.3grep -i 忽略大小写 2.4grep -n 显示行号 2.5grep -c 统计匹配行数 2.6grep -A 后几行 2.7grep -C 前后三行 2.8grep -B 前三行 2.9grep -e 或 2.10grep -w 匹配整个单词 2.11grep -r…...
代码随想录算法训练营Day38|动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
目录 动态规划理论基础 什么是动态规划 动态规划的解题步骤 动态规划的debug 509. 斐波那契数 前言 思路 算法实现 方法一:动态规划 方法二:递归法 70. 爬楼梯 前言 思路 算法实现 拓展 746. 使用最小花费爬楼梯 算法实现 总结 动态规划…...
C++中的指针空值nullptr
一、nullptr的引入 在C98中,通常是用NULL或者0对指针变量进行初始化 int* p1 NULL; int* p2 0; NULL其实一个宏,本质是0,在传统C头文件stddef.h中给可以看到如下代码 #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define …...
【Linux网络编程】网络编程套接字(1)
【Linux网络编程】网络编程套接字(1) 目录 【Linux网络编程】网络编程套接字(1)源IP地址和目的IP地址端口号端口号和进程ID的关系 网络通信TCP协议UDP协议网络字节序socket编程接口简单的UDP网络程序 作者:爱写代码的刚子 时间:2024.1.29 前言࿱…...
vite+ts+vue3打包的过程和错误
文章目录 概要vite.config.ts配置tsconfig.json 的配置package.json 的配置路由配置打包打开打包后的文件小结 概要 完成vite的打包,和在本地打开页面 记录一下,vite打包过程中的问题!!! vite.config.ts配置 vite.config.ts配置打包的相关配置 import…...
80.双指针实现删除有序数组中的重复项 II(中等)-面试经典150题
题目 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明…...
基于大数据的B站数据分析系统的设计与实现
摘要:随着B站(哔哩哔哩网)在国内视频分享平台的崛起,用户规模和数据量不断增加。为了更好地理解和利用这些海量的B站数据,设计并实现了一套基于Python的B站数据分析系统。该系统采用了layui作为前端框架、Flask作为后端…...
机器学习模型预测贷款审批
机器学习模型预测贷款审批 作者:i阿极 作者简介:数据分析领域优质创作者、多项比赛获奖者:博主个人首页 😊😊😊如果觉得文章不错或能帮助到你学习,可以点赞👍收藏📁评论&…...
Linux实验记录:使用firewalld
前言: 本文是一篇关于Linux系统初学者的实验记录。 参考书籍:《Linux就该这么学》 实验环境: VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注: RHEL8系统中集成了多款防火墙管理工具…...
Vue之初识Vue CLI 脚手架
Vue CLI 是Vue 官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子。【集成了webpack配置】 脚手架有什么好处? 1.开箱即用,零配置 2.内置 babel 等工具 3.标准化 使用步骤: 1.全局安装(一次):yarn globaladd vue/cli …...
[Tcpdump] 网络抓包工具使用教程
往期回顾 海思 tcpdump 移植开发详解海思 tcpdump 移植开发详解 前言 上一节,我们已经讲解了在海思平台如何基于静态库生成 tcpdump 工具,本节将作为上一节的拓展内容。 一、tcpdump 简介 「 tcpdump 」是一款强大的网络抓包工具,它基于…...
MongoDB常用命令
3.1 案例需求 存放文章评论的数据存放到MongoDB中,数据结构参考如下: 数据库:articledb 3.2 数据库操作 3.2.1 选择和创建数据库 选择和创建数据库的语法格式: use 数据库名称 如果数据库不存在则自动创建,例如&a…...
强敌环伺:金融业信息安全威胁分析——整体态势
从早期的Zeus和其他以银行为目标的特洛伊木马程序,到现在的大规模分布式拒绝服务(DDoS)攻击,再到新颖的钓鱼攻击和勒索软件,金融服务业已成为遭遇网络犯罪威胁最严重的行业之一。金融服务业的重要性不言而喻࿰…...
FreeRTOS简介
一 FreeRTOS简介 实时操作系统(Real-Time Operating System,RTOS)是一种专门设计用于处理实时任务的操作系统。它的主要作用是提供具有严格时间约束的任务调度和资源管理,以满足实时系统对时间的要求。 可分为硬实时和软实时&am…...
51单片机点灯
51单片机点灯 1.点亮LED灯 #include "reg52.h"sbit ledOne P3^7;void main() {//灯亮,给一个P3.7低电平ledOne 0; }给LED1对应标号的P3^7一个低电平,就能点亮LED灯2.LED灯闪烁 #include "reg52.h"sbit ledOne P3^7;void Delay…...
sql注入之union联合注入
一、Union注入 联合查询注入是联合两个表进行注入攻击,使用关键词 union select 对两个表进行联合查询。两个表的字段数要相同,不然会出现报错。列数相同 union 特性是显示两张表 我们就可以吧第一个参数变为------负--的 或者不存在的值 就行了 显示就…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
Python 训练营打卡 Day 47
注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...
