【python基础】组合数据类型:元组、列表、集合、映射

news2024/11/28 0:33:06

文章目录

  • 一. 序列类型
    • 1. 元组类型
    • 2. 列表类型(list)
      • 2.1. 列表创建
      • 2.2 列表操作
      • 2.3. 列表元素遍历 ing
        • 元素列表求平均值
        • 删除散的倍数
  • 二. 集合类型(set)
  • 三. 映射类型(map)
    • 1. 字典创建
    • 2. 字典操作
    • 3. 字典遍历 ing
      • 3.1. 计算消费额
      • 3.2. 词频统计

多个数据(可以是不同类型)组合成一个整体的数据集合称为组合数据类型,组合数据类型分为三类:序列类型、集合类型、映射类型。

一. 序列类型

Python中很多数据类型都是序列类型,其中比较重要的是字符串 (str)、元组(tuple)、列表(list)。

  • 字符串可以看成一个单字符的有序组合,属于序列类型,同时也是一种基本数据类型。
  • 元组是包含0个或多个数据项的不可变序列类型,即元组一旦生成,任何数据项都不可替换或删除。
  • 列表则是一个可以修改数据项的序列类型,使用非常灵活。

只要是序列类型,都可以使用相同的索引体系,Python中的序列支持双向索引,即正向递增序号和反向递减序号。

在这里插入图片描述

正向递增索引从左到右依次递增,第1个元素的索引号为0,第2个元 素的索引号为1,以此类推。反向递减索引从右到左依次递减,最后一个 元素的索引号为-1,倒数第二个为-2,以此类推。

序列类型有12个通用的操作符和函数,如表所示。

在这里插入图片描述

1. 元组类型

元组一旦创建就不能被修改。一般用于表达固定数据项、函数返回值、多变量同时赋值、循环遍历等情况。

Python构建元组的方式非常简单,可以用tuple()函数构建,

  • tuple()函数中的参数是一个可迭代的数据,若没有传入参数,则创建空元组。
  • 可以直接用圆括号包含多个使用逗号隔开的元素来创建元组。
  • 非空元组的括号可以省略。
>>> tuple[(1,2,3)]
tuple[1, 2, 3]

>>> tuple[1,2,3]
tuple[1, 2, 3]

>>> tuple('Python')
('P', 'y', 't', 'h', 'o', 'n')

>>> st='学号','姓名','专业'
>>> st
('学号', '姓名', '专业')

>>> course=('高等数学','英语','python程序设计')
>>> course[1]
'英语'
>>> course[0]
'高等数学'

 

2. 列表类型(list)

列表(list)是包含0个或多个对象引用的有序序列,

  • 与元组不同, 列表的长度和内容都是可变的,可自由对列表中的数据项进行增加、删除 或替换
  • 列表没有长度限制,元素的类型可以各不相同,使用非常灵活。

2.1. 列表创建

# 1. list()函数将已有的元组字符串转换为列表。
# 元组转换位列表
>>> tuple[1,2]
tuple[1, 2]
>>> tp=(10,20,30)
>>> list(tp)
[10, 20, 30]

# 2. 直接 用[]号创建 存放不同元素
>>> ls=[12,'abc',['red','green']]
>>> ls[2][1]
'green'

 

2.2 列表操作

# 浅拷贝
>>> lt = ls
# 修改值
>>> ls[1]='python'
>>> ls[1]
'python'
>>> lt 
[12, 'python', ['red', 'green']]

# 深拷贝
# 或通过list()或 [ ]创建才会生成新列表
>>> lt =ls.copy()
>>> lt
[12, 'python', ['red', 'green']]

在这里插入图片描述

  1. 替换:单个元素替换;范围替换;范围步长替换、
  2. 删除:范围删除;范围步长删除
  3. 列表叠加;列表翻倍:所有元素重复n倍;列表追加、列表在某个位置插入
  4. 清空列表;取出列表指定位置元素并删除;删除第一个出现的元素x
  5. 列表复制;
  6. 列表反转(不需要参数);列表排序。
>>> lt.reverse(1)
TypeError: list.reverse() takes no arguments (1 given)

>>> lt.reverse()
>>> lt
['1', 1, ['red', 'green'], 'python', 12, ['red', 'green'], 'python', 12]

 

2.3. 列表元素遍历 ing

对列表进行遍历使用for-in结构,可对列表中的元素按序访问。

如果对元素访问时不需要删除操作,则可直接遍历列表。如果对元素 访问时涉及删除或改变元素位置等操作,则应先对原列表进行复制,在复 制的列表中遍历,而在原列表中操作,这样可以保证每个元素都能被遍历 并进行操作。

元素列表求平均值
删除散的倍数

 

二. 集合类型(set)

定义

  • 集合中的元素不可重复,元素类型只能是固定数据类型,不能是可变数据类型
  • 集合是无序的组合,没有索引和位置的概念,不能分片,集合中的元素可以动态增加或删除。

创建

  • 集合用大括号{}表示,各元素之间用逗号隔开。
  • set()函数进行集合的创建
>>> s1={100,'python',2.9}
>>> s1
{'python', 2.9, 100}

>>> s2=set('python')
>>> s2
{'p', 'h', 'o', 't', 'y', 'n'}

>>> s3=set(('python',123))
>>> s3
{'python', 123}

 

集合的操作符有10个
在这里插入图片描述

返回一个新集合或更新S

  1. 包含在S但不含T中元素:-
  2. 同时包含在S且T中的元素:&
  3. 取非交集:^
  4. 两者所有元素:|
  5. 子集与真子集:>、>=

 

三. 映射类型(map)

  • 映射类型每一个元素都是一个键-值对,即元素是(key,value),元素之间是无序的
  • 键(key)表示一个属性,也可理解为一个类别或项目,值(value) 是属性的内容。键-值对将映射关系结构化,用于存储和表达。
  • 在实际应用中有很多键-值对的案例,如通信录中姓名和电话号码、 用户信息中用户名与密码、邮政编码与运输成本、国家名称与首都等。

1. 字典创建

这种通过任意键信息查找一组数据中值信息的过程称为映射,在 Python中,映射类型主要以字典(dict)进行体现。

  • 字典是包含0个或多个键-值对的无序集合,没有长度限制,可以根据键索引值的内容,且键具有唯一性
  • Python中可以通过函数dict()来创建空字典,也可以通过大括号{} 来创建。
>>> student={}
>>> student=dict()

>>> d={"中国":"北京","美国":"华盛顿"}


# 获取某一个元素
>>> d["中国"]
'北京'

# 修改值
>>> d["中国"] = "上海"
>>> d["中国"]
'上海'

输出顺序:字典输出数据的顺序可能与创建之初的顺序不一致。其原因是字典是集合类型的延续,所以各元素之间没有顺序之分。

 

2. 字典操作

在这里插入图片描述

  1. 返回键列表;值列表;键值列表
  2. 获取某个键的值;元组形式返回
  3. 获取值,并删除此键值对;删除所有;删除某一个
  4. 判断key是否存在

 

>>> d={"中国":"北京","美国":"华盛顿","英国":"伦敦"}
>>> d
{'中国': '北京', '美国': '华盛顿', '英国': '伦敦'}

>>> d.keys()
dict_keys(['中国', '美国', '英国'])
>>> list(d.values())
['北京', '华盛顿', '伦敦']
>>> list(d.items())
[('中国', '北京'), ('美国', '华盛顿'), ('英国', '伦敦')]


>>> d.get('中国','上海')
'北京'
>>> d.pop('法国','巴黎')
'巴黎'

>>> d
{'中国': '北京', '美国': '华盛顿', '英国': '伦敦'}
>>> d.pop('中国','巴黎')
'北京'

>>> d
{'美国': '华盛顿', '英国': '伦敦'}
>>> d.popitem()
('英国', '伦敦')
>>> d
{'美国': '华盛顿'}

>>> del d['美国']
>>> d
{}

 

3. 字典遍历 ing

3.1. 计算消费额

3.2. 词频统计

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938063.html

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

相关文章

OV7670寄存器读出0x00或0xFF

文章目录 问题描述原因分析解决方案 问题描述 OV7670的输出图像异常,怀疑寄存器没有正确配置,在SignalTap中观察到SIO_D在读出阶段一直为高或低 寄存器读出0x00 寄存器读出0xFF 原因分析 在确保电源、时钟和读写时序没有问题的情况下,有…

mysql的索引、事务和存储引擎

目录 索引 索引的概念 索引的作用 作用 索引的副作用 创建索引 创建索引的原则和依据 索引的类型 创建索引 查看索引 删除索引 drop 主键索引 普通索引 添加普通索引 唯一索引 添加唯一索引 组合索引 添加组合索引 查询组合索引 全文索引 添加全文索引 …

K12智慧校园智能化解决方案

1. 项目背景 “十三五”期间,教育信息化工作旨在为教育改革发展提供动力与手段,目标是到2020年建成与国家教育现代化发展目标相适应的教育信息化体系。 2. 建设需求 智慧校园系统框架解析与建设目标分析,旨在实现教育信息化目标任务。 3.…

利用双端队列 实现二叉树的非递归的中序遍历

双端队列:双向队列:支持插入删除元素的线性集合。 java官方文档推荐用deque实现栈(stack)。 pop(): 弹出栈中元素,也就是返回并移除队头元素,等价于removeFirst(),如果队列无元素,则…

QDockWidget

详细描述 QDockWidget 类提供了一个小部件,它可以停靠在QMainWindow内部,也可以作为桌面上的顶级窗口浮动。 QDockWidget 提供了停靠部件的概念,也称为工具调色板或实用窗口。停靠窗口是放置在 中央部件 周围的停靠部件区域中的辅助窗口&am…

多商户商城系统源码解析及直播电商APP开发指南

本篇文章,笔者将详细解析多商户商城系统的源码结构,并提供开发直播电商APP的指南。 一、多商户商城系统源码解析 系统架构设计 多商户商城系统的架构设计通常分为前端、后端和数据库三个部分: 前端 后端 数据库 核心模块分析 多商户商…

SpringMVC源码深度解析(上)

今天,聊聊SpringMVC框架的原理。SpringMVC属于Web框架,它不能单独存在,需要依赖Servlet容器,常用的Servlet容器有Tomcat、Jetty等,这里以Tomcat为例进行讲解。老规矩,先看看本项目的层级结构: 需…

ETAS RTM配置及使用-CPU Load测量/task时间测量/Isr时间测量

文章目录 前言RTM配置RtmControlRtmGeneralRtmMonitorOS配置RTE配置集成与测试初始化主函数函数执行测量测试CPU LoadTask MonitorISR Monitor函数监控总结前言 一般对CPU Load的测量,task及runnable的监控等有两种方案: 1.需要使用带trace功能的调试器,且硬件也需要支持对…

鸿蒙开发 01 实现骰子布局

鸿蒙开发 01 鸿蒙开发 01 实现骰子布局 1、效果2、代码 1、效果 2、代码 Entry Component struct Index {State message: string Hello Worldbuild() {Column() {Row() {Radio({ value: Radio1, group: radioGroup }).checked(false).height(100)Radio({ value: Radio1, grou…

【Linux线程】线程的认识

目录 线程的概念及一些基本理论 线程异常 线程与进程的关系 线程ID、线程控制块 线程的概念及一些基本理论 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列” 。 Linux没有真正意义上的线…

【每日刷题】Day83

【每日刷题】Day83 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. LCR 192. 把字符串转换成整数 (atoi) - 力扣(LeetCode) 2. 415. 字符串相加…

ubuntu安装显卡驱动,anaconda,cuda,cudnn,pytorch

安装显卡驱动:主要参考第一篇。 Ubuntu22.04安装显卡驱动(高速、避错版)-CSDN博客 [超级详细系列]ubuntu22.04配置深度学习环境(显卡驱动CUDAcuDNNPytorch)--[2]安装Anaconda与CUDA_ubuntu22.04配置cuda环境变量-CSDN博客 安装anaconda和cuda [超级详细系列]ubun…

从0开始的informer代码解读

股价预测源码原版来源 github https://github.com/zhouhaoyi/Informer2020 数据 工欲善其事必先利其器,这是我经常说的。所以了解我们的数据处理很重要,毕竟要的就是地地地地地地道。 源码中的date数据很重要。但是我们要知道我们下载的代码具有可拓…

python-NLP:1中文分词

文章目录 规则分词正向最大匹配法逆向最大匹配法双向最大匹配法 统计分词语言模型HMM模型 jieba分词分词关键词提取词性标注 规则分词 基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行…

pytorch学习(十二)c++调用minist训练的onnx模型

在实际使用过程中,使用python速度不够快,并且不太好嵌入到c程序中,因此可以把pytorch训练的模型转成onnx模型,然后使用opencv进行调用。 所需要用到的库有: opencv 1.完整的程序如下 import torch from torch impo…

06. 截断文本 选择任何链接 :root 和 html 有什么区别

截断文本 对超过一行的文本进行截断,在末尾添加省略号(…)。 使用 overflow: hidden 防止文本超出其尺寸。使用 white-space: nowrap 防止文本超过一行高度。使用 text-overflow: ellipsis 使得如果文本超出其尺寸,将以省略号结尾。为元素指定固定的 width,以确定何时显示省略…

韩顺平0基础学Java——第35天

p689-714 格式化语句 gpt说的: System.out.println 方法不支持像 printf 一样的格式化字符串。要使用格式化字符串,你可以使用 System.out.printf 方法或将格式化后的字符串传递给 System.out.println。下面是两种修正的方法: ### 方法一…

科研绘图系列:R语言circos图(circos plot)

介绍 Circos图是一种数据可视化工具,它以圆形布局展示数据,通常用于显示数据之间的关系和模式。这种图表特别适合于展示分层数据或网络关系。Circos图的一些关键特点包括: 圆形布局:数据被组织在一个或多个同心圆中,每个圆可以代表不同的数据维度或层次。扇区:每个圆被划…

昇思25天学习打卡营第25天|MindNLP ChatGLM-6B StreamChat

配置环节 %%capture captured_output !pip uninstall mindspore -y !pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore2.2.14 !pip install mindnlp !pip install mdtex2html配置国内镜像 !export HF_ENDPOINThttps://hf-mirror.com下载与加载模型 from m…

【safari】react在safari浏览器中,遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。如何解决

在safari浏览器中,可能会遇到异步时间差的问题,导致状态没有及时更新到state,引起传参错误。 PS:由于useState是一个普通的函数, 定义为() > void;因此此处不能用await/async替代setTimeout,只能用在返…