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

文章目录

  • 一. 序列类型
    • 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.rhkb.cn/news/380626.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【EI检索】第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

一、会议信息 大会官网:www.mvipit.org 官方邮箱:mvipit163.com 会议出版:IEEE CPS 出版 会议检索:EI & Scopus 检索 会议地点:河北张家口 会议时间:2024 年 9 月 13 日-9 月 15 日 二、征稿主题…

【香橙派开发板测试】:在黑科技Orange Pi AIpro部署YOLOv8深度学习纤维分割检测模型

文章目录 🚀🚀🚀前言一、1️⃣ Orange Pi AIpro开发板相关介绍1.1 🎓 核心配置1.2 ✨开发板接口详情图1.3 ⭐️开箱展示 二、2️⃣配置开发板详细教程2.1 🎓 烧录镜像系统2.2 ✨配置网络2.3 ⭐️使用SSH连接主板 三、…

Web开发:图片九宫格与非九宫格动态切换效果(HTML、CSS、JavaScript)

目录 一、业务需求 二、实现思路 三、实现过程 1、基础页面 2、图片大小调整 3、图片位置调整 4、鼠标控制切换 5、添加过渡 四、完整代码 一、业务需求 默认显示基础图片; 当鼠标移入,使用九宫格效果展示图片; 当鼠标离开&#…

CTF-Web习题:[BJDCTF2020]ZJCTF,不过如此

题目链接:[BJDCTF2020]ZJCTF,不过如此 解题思路 访问靶场链接,出现的是一段php源码,接下来做一下代码审阅,发现这是一道涉及文件包含的题 主要PHP代码语义: file_get_contents($text,r); 把$text变量所…

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS

基于NeRF的路面重建算法——RoME / EMIE-MAP / RoGS 1. RoMe1.1 Mesh Initialization / Waypoint Sampling1.2 Optimization1.3 Experiments 2. EMIE-MAP2.1 Road Surface Representation based on Explicit mesh and Implicit Encoding2.2 Optimizing Strategies2.3 Experimen…

Uniapp鸿蒙项目实战

Uniapp鸿蒙项目实战 24.7.6 Dcloud发布了uniapp兼容鸿蒙的文档:Uniapp开发鸿蒙应用 在实际使用中发现一些问题,开贴记录一下 设备准备 windows电脑准备(家庭版不行,教育版、企业版、专业版也可以,不像uniapp说的只有…

Promise 详解(原理篇)

目录 什么是 Promise 实现一个 Promise Promise 的声明 解决基本状态 添加 then 方法 解决异步实现 解决链式调用 完成 resolvePromise 函数 解决其他问题 添加 catch 方法 添加 finally 方法 添加 resolve、reject、race、all 等方法 如何验证我们的 Promise 是否…

分布式搜索之Elasticsearch入门

Elasticsearch 是什么 Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。 Elastic Stack 又是什么呢&a…

企业须善用数字化杠杆经营获取数字化时代红利

​在当今数字化时代,企业面临着新机遇和新挑战。数字化技术的迅速发展正在重塑商业格局,企业若能善用数字化杠杆经营,将能够在激烈的市场竞争中脱颖而出,获取丰厚的时代红利。 数字化杠杆的内涵 数字化杠杆是指企业借助数字化技术…

SAPUI5基础知识16 - 深入理解MVC架构

1. 背景 经过一系列的练习,相信大家对于SAPUI5的应用程序已经有了直观的认识,我们在练习中介绍了视图、控制器、模型的概念和用法。在本篇博客中,让我们回顾总结下这些知识点,更深入地理解SAPUI5的MVC架构。 首先,让…

Android 性能优化之卡顿优化

文章目录 Android 性能优化之卡顿优化卡顿检测TraceView配置缺点 StricktMode配置违规代码 BlockCanary配置问题代码缺点 ANRANR原因ANRWatchDog监测解决方案 Android 性能优化之卡顿优化 卡顿检测 TraceViewStricktModelBlockCanary TraceView 配置 Debug.startMethodTra…

XMl基本操作

引言 使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL功能,建议使⽤XML来配置映射语句,也就是将SQL语句写在XML配置⽂件中. 之前,我们学习了,用注解的方式来实现MyBatis 接下来我们…

【STM32】按键控制LED光敏传感器控制蜂鸣器(江科大)

一、按键控制LED LED.c #include "stm32f10x.h" // Device header/*** 函 数:LED初始化* 参 数:无* 返 回 值:无*/ void LED_Init(void) {/*开启时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENAB…

数据结构(稀疏数组)

简介 稀疏数组是一种数据结构,用于有效地存储和处理那些大多数元素都是零或者重复值的数组。在稀疏数组中,只有非零或非重复的元素会被存储,从而节省内存空间。 案例引入 假如想把下面这张表存入文件,我们会怎么做?…

超简单安装指定版本的clickhouse

超简单安装指定版本的clickhouse 命令执行shell脚本 idea连接 命令执行 参考官网 # 下载脚本 wget https://raw.githubusercontent.com/183461750/doc-record/d988dced891d70b23c153a3bbfecee67902a3757/middleware/data/clickhouse/clickhouse-install.sh # 执行安装脚本(中…

记录些Spring+题集(12)

11种API性能优化方法 一、索引优化 接口性能优化时,大家第一个想到的通常是:优化索引,优化索引的成本是最小的。 你可以通过查看线上日志或监控报告,发现某个接口使用的某条SQL语句耗时较长。 这条SQL语句是否已经加了索引&…

PHP Program to print pyramid pattern (打印金字塔图案的程序)

编写程序打印由星星组成的金字塔图案 例子 : 输入:n 6输出: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 我们强烈建…

基于术语词典干预的机器翻译挑战赛笔记Task2 #Datawhale AI 夏令营

上回: 基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baseline Datawhale AI 夏令营-CSDN博客文章浏览阅读718次,点赞11次,收藏8次。基于术语词典干预的机器翻译挑战赛笔记Task1 跑通baselinehttps://blog.csdn.net/qq_23311271/article/d…

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中,HTTP(HyperText Transfer Protocol&…

【考研数学】线代满分经验分享+备考复盘

我一战二战复习都听了李永乐的线代课,二战的时候只听了一遍强化,个人感觉没有很乱,永乐大帝的课逻辑还是很清晰的。 以下是我听向量这一章后根据听课内容和讲义例题总结的部分思维导图,永乐大帝讲课的时候也会特意点到线代前后联…