当前位置: 首页 > news >正文

【Python】组合数据类型:序列,列表,元组,字典,集合

在这里插入图片描述


个人主页:【😊个人主页】
系列专栏:【❤️Python】


文章目录

  • 前言
  • 组合数据类型
  • 序列类型
    • 序列常见的操作符
    • 列表
      • 列表操作
        • len()
        • append()
        • insert()
        • remove()
        • index()
        • sort()
        • reverse()
        • count()
    • 元组
    • 三种序列类型的区别
  • 集合类型
    • 四种操作符
    • 集合
      • set
      • frozenset
      • 常见的集合类型操作函数
  • 映射类型
    • 字典
      • 字典类型的常用方法
  • 数据类型转换


前言

在上一篇文章中,我们介绍了九种数据类型的前三种,包括了数字,布尔类型,字符串类型,今天我们就来介绍在Python中占有特殊地位的五种组合数据类型:序列,列表,元组,字典,集合。想了解更多Python内容请订阅内容【Python系列教程】
在这里插入图片描述

组合数据类型

组合数据类型能将不同类型的数据组织在一起,实现更复杂的数据表示或数据处理功能。根据数据之间的关系,组合数据类型可以分为三类:序列类型映射类型集合类型。序列类型包括列表、元组和字符串三种。映射类型用键值对表示数据,典型的映射类型有字典。集合类型的数据中元素是无序的,集合中不允许有相同的元素存在。

——集合类型:是一个元素集合,元素之间无序,相同元素在集合中唯一存在。集合(set)
——序列类型:是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。序列类型的典型代表是字符串(str)、列表(list)、元组(tuple)
——映射类型:是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value).映射类型的典型代表是字典(dict)

在这里插入图片描述

序列类型

序列类型的元素之间存在先后关系,通过索引来访问,当我们需要访问序列中的某个元素时,要找出其索引,再通过索引寻找元素。

这些序列类型都支持索引和切片操作,可以通过索引访问序列中的元素,也可以通过切片获取序列的子序列。此外,还可以使用内置函数和方法对序列进行操作,例如获取序列的长度、查找元素的位置、添加、删除和修改元素等。

序列常见的操作符

操作符描述
x in s如果x是s的元素,返回True,否则返回Flase
x not in s如果x不是s的元素,返回True,否则返回Flase
s +t连接s和t
s n或ns将序列s复制n次
s[i]索引,返回序列的第i个元素
s[i:j]切片,返回序列s到第i到第j个元素的子序列(不包含第j个元素)
s[i:j:k]步骤切片,返回包括序列s到第i到第j个元素以k为步长的子序列
len(s)序列s的元素个数(长度)
min(s)序列s中的最小元素
max(s)序列s中的最大元素
s.index(x)序列s中第一次出现元素x的位置
s.count(x)序列s中元素x出现的总次数

列表

列表是 Python 中最常用的序列类型,它是由元素组成的可变序列,使用方括号括起来,并用逗号分隔。4

列表中的元素(又称数据项)不需要具有相同的类型。创建列表时,只要把逗号分隔的元素使用方括号括起来即可。列表是可变的,用户可在列表中任意增加元素或删除元素,还可对列表进行遍历、排序、反转等操作。

在这里插入图片描述

list = ['runoob', 786, 2.23, 'john', 70.2]
tinylist = [123, 'xue']
print(list)  # 输出完整列表
print(list[0] ) # 输出列表的第一个元素
print(list[1:3])  # 输出第二个至第三个元素
print(list[2:]) # 输出从第三个开始至列表末尾的所有元素
print (tinylist * 2 ) # 输出列表两次
print (list + tinylist)  # 打印组合的列表

在这里插入图片描述

列表操作

在这里插入图片描述

len()
my_list = [1, 2, 3, 4]
print(len(my_list))  # 输出4
    返回列表的长度
append()
my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # 输出[1, 2, 3, 4]
向列表末尾添加元素
insert()
my_list = [1, 2, 3, 4]
my_list.insert(2, 5)
print(my_list)  # 输出[1, 2, 5, 3, 4]
在指定位置插入元素
remove()
my_list = [1, 2, 3, 4]
my_list.remove(3)
print(my_list)  # 输出[1, 2, 4]
移除指定元素
index()
my_list = [1, 2, 3, 4]
print(my_list.index(3))  # 输出2
返回指定元素第一次出现的索引
sort()
my_list = [3, 1, 4, 2]
my_list.sort()
print(my_list)  # 输出[1, 2, 3, 4]
对列表进行排序
reverse()
my_list = [1, 2, 3, 4]
my_list.reverse()
print(my_list)  # 输出[4, 3, 2, 1]
反转列表
count()
my_list = [1, 2, 2, 3, 3, 3]
print(my_list.count(2))  # 输出2
返回指定元素在列表中出现的次数

元组

Python的元组与列表类似,不同之处在于元组的元素不能修改,元组使用小括号(),列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用括号隔开即可。元组是序列类型中比较特殊的类型,因为它一旦创建就不能被修改。元组类型在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用。Python中元组采用逗号和圆括号(可选)来表示。一个元组可以作为另一个元组的元素,可以采用多级索引获取信息。
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表

tuple = ('runoob', 786, 2.23, 'john', 70.2)
tinytuple = (123, 'xue')print(tuple) # 输出完整元组
print(tuple[0])  # 输出元组的第一个元素
print(tuple[1:3]) # 输出第二个至第四个(不包含)的元素
print(tuple[2:])  # 输出从第三个开始至列表末尾的所有元素
print(tinytuple * 2)  # 输出元组两次
print(tuple + tinytuple)  # 打印组合的元组

在这里插入图片描述
注:元组不允许更新,而列表是允许更新的

三种序列类型的区别

  • 字符串是由单一字符组成的不可修改的序列类型。
  • 列表是一个可以修改的序列类型,使用相对更加灵活。
  • 元组是一个不可变的序列类型,构建好以后不可以进行任何修改。

字符串是不可变的,而列表和元组是可变的。
字符串和元组一旦创建就不能修改,而列表可以进行修改。
元素的类型可以是任意的,但是元组和字符串的元素类型必须一致。
字符串使用单引号或双引号,列表和元组使用方括号和小括号来定义。

集合类型

四种操作符

Python 中的集合与数学中集合的概念是一致的,因此,两个集合可以做数学意义上的交集并集、差集计算等

操作符的运算描述
S-T返回一个新集合包括在集合S中但不在集合T中的元素
S&T返回一个新集合包括同时在集合S和集合T中的元素
S^T返回一个新集合包括集合S和集合T中的非共同元素
ST返回一个新集合包括集合S和集合T中的所有元素

集合

在Python中,集合类型是一种可变的、无重复元素的无序集合。Python提供了两种集合类型:set和frozenset。

set

set是一个可变集合,可以通过添加、删除元素来修改集合。创建set可以通过花括号{}或者set()函数来实现。

s = {1, 2, 3}  # 创建一个集合包含元素1、2、3

frozenset

rozenset是一个不可变集合,创建后不能再添加或删除元素。创建frozenset可以使用frozenset()函数。

fs = frozenset([4, 5, 6])  # 创建一个不可变集合包含元素4、5、6

常见的集合类型操作函数

S.add(x):如果数据域x不在集合S中,将x增加到s
S.remove(x):如果x在集合S中,移动该元素;不在产生KeyError异常
S.clear():移除S中所有数据域
len(S):返回集合S元素个数
x in S:如果x是S的元素,返回True,否则返回Flase
x not in S:如果x不是S的元素,返回True,否则返回Flase

映射类型

字典

字典是 Python 中内置的映射类型。映射是通过键值查找一组数据值信息的过程,由 key-value的键值对组成,通过 key 可以找到其映射的值 value。

字典可以看作是由键值对构成的列表。在搜索字典时,首先查找键,当查找到键后就可以直接获取该键对应的值。这是一种高效、实用的查找方法。这种数据结构之所以被命名为字典,是因为它的存储和检索过程与真正的字典类似。键类似于字典中的单词,根据字典的组织方式(例如,按字母顺序排列)找到单词(键)非常容易,找到键就能找到相关的值(定义)。但反向的搜索,使用值去搜索键则难以实现。
字典中的值并没有特殊的顺序,它们都存储在一个特定的键(key)里。键可以是数字、字符串以及元组等。此外,字典中的元素(键值对)是无序的。当添加键值对时,Python会自动修改字典的排列顺序,以提高搜索效率,且这种排列方式对用户是隐藏的。

dicts 为字典名,key 为键,value 为值
建立模式:
{<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}

dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'runoob', 'code': 6734, 'dept': 'sales'}
print(dict['one'])  # 输出键为'one' 的值
print(dict[2])  # 输出键为 2 的值
print(tinydict)  # 输出完整的字典
print(tinydict.keys()) # 输出所有键
print(tinydict.values())  # 输出所有值

在这里插入图片描述

字典类型的常用方法

在这里插入图片描述

数据类型转换

在这里插入图片描述
来源:菜鸟教程 Python变量类型
在这里插入图片描述

相关文章:

【Python】组合数据类型:序列,列表,元组,字典,集合

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️Python】 文章目录 前言组合数据类型序列类型序列常见的操作符列表列表操作len()append()insert()remove()index()sort()reverse()count() 元组三种序列类型的区别 集合类型四种操作符集合setfrozens…...

algorithm算法库学习之——不修改序列的操作

algorithm此头文件是算法库的一部分。本篇介绍不修改序列的操作函数。 不修改序列的操作 all_ofany_ofnone_of (C11)(C11)(C11) 检查谓词是否对范围中所有、任一或无元素为 true (函数模板) for_each 应用函数到范围中的元素 (函数模板) for_each_n (C17) 应用一个函数对象到序…...

idea创建的maven项目pom文件引入的坐标报红原因

如下所示 我们在引入某些依赖坐标的时候&#xff0c;即使点击了右上角的mavne刷新之后还是报红。 其实这是正常现象&#xff0c;实际上是我们的本地仓库当中没有这些依赖坐标&#xff0c;而idea就会通过报红来标记这些依赖来说明在我们的本地仓库是不存在的。 那有的同学就会…...

Python面试题:Python 中的生成器(generator)是什么?有什么优点?

在Python中&#xff0c;生成器&#xff08;generator&#xff09;是一种特殊的迭代器&#xff0c;使用yield关键字生成值&#xff0c;可以逐个生成序列中的值&#xff0c;而不需要一次性将所有值加载到内存中。生成器函数在定义时使用def关键字&#xff0c;并包含一个或多个yie…...

Go语言--复合类型之map、结构体

map Go 语言中的 map(映射、字典)是一种内置的数据结构&#xff0c;它是一个无序的 key-value 对的集合&#xff0c;比如以身份证号作为唯一键来标识一个人的信息。 格式 map [keyType]valueType 在一个 map 里所有的键都是唯一的&#xff0c;而且必须是支持和!操作符的类型…...

Stable Diffusion图像的脸部细节控制——采样器全解析

文章目录 艺术地掌控人物形象好易智算原因分析为什么在使用Stable Diffusion生成全身图像时&#xff0c;脸部细节往往不够精细&#xff1f; 解决策略 局部重绘采样器总结 艺术地掌控人物形象 在运用Stable Diffusion这一功能强大的AI绘图工具时&#xff0c;我们往往会发现自己…...

CurrentHashMap巧妙利用位运算获取数组指定下标元素

先来了解一下数组对象在堆中的存储形式【数组长度&#xff0c;数组元素类型信息等】 【存放元素对象的空间】 Ma 基础信息实例数据内存填充Mark Word,ClassPointer,数组长度第一个元素第二个元素固定的填充内容 所以我们想要获取某个下标的元素首先要获取这个元素的起始位置…...

实现antd designable平台的组件拖拽功能

平台&#xff1a;designable设计器 github&#xff1a;designable 目录 1 背景2 技术栈3 组件拖拽和放置3.1 类型定义3.2 拖拽3.3 放置 1 背景 由于业务需求&#xff0c;我们需要实现designable平台的一个简易版的组件拖拽功能。 #mermaid-svg-QrxSDGe9YyGG3LbQ {font-family:…...

计算机网络-IP组播基础

一、概述 在前面的学习交换机和路由协议&#xff0c;二层通信是数据链路层间通信&#xff0c;在同一个广播域间通过源MAC地址和目的MAC地址进行通信&#xff0c;当两台主机第一次通信由于不清楚目的MAC地址需要进行广播泛洪&#xff0c;目的主机回复自身MAC地址&#xff0c;然后…...

Git删除了文件拉取时失败

本地删除了一些文件&#xff0c;远端的另一个提交修改了被删除的文件&#xff0c;vs里拉取时提示未处理的提交&#xff0c;无法继续操作&#xff0c;git gui里显示很多unstaged change的项 解决办法&#xff1a; 1、用git bash的git rm --cached filename或 git rm -r --cached…...

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令

大致介绍了一下管道、环境变量、一些常用的基本命令&#xff0c;可以当作学习笔记收藏学习一下&#xff01;&#xff01;&#xff01; 文章目录 前言 一、管道 二、环境变量 1.概念 2.查看 3.修改 4.常用环境变量 三、系统状况 总结 前言 大致介绍了一下管道、环境变量、一些常…...

Spring Boot与Apache Kafka Streams的集成

Spring Boot与Apache Kafka Streams的集成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 一、Apache Kafka Streams简介 Apache Kafka Streams是一个用于构…...

Unity中使用VectorGraphics插件时,VectorUtils.RenderSpriteToTexture2D方法返回结果错误的解决方法

Unity中使用VectorGraphics插件时&#xff0c;如果使用VectorUtils.BuildSprite方法创建Sprite&#xff0c;那么得到的Sprite往往是一个三角网格数比较多的Sprite&#xff0c;如果想要得到使用贴图只有两个三角面的方形Sprite&#xff0c;可以使用该插件提供的VectorUtils.Rend…...

用MySQL+node+vue做一个学生信息管理系统(一):配置项目

先用npm init -y生成配置文件 在项目下新建src文件夹&#xff0c;app.js文件。src目录用来放静态资源文件&#xff0c;app.js是服务器文件&#xff0c;index.js是vue的入口文件 使用npm install express下载express框架 在app.js文件夹开启node服务&#xff0c;监听的端口为…...

2024年06月CCF-GESP编程能力等级认证Python编程二级真题解析

本文收录于专栏《Python等级认证CCF-GESP真题解析》&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 一、单选题&#xff08;每题 2 分&#xff0c;共 30 分&#xff09; 第 1 题 小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证…...

Unity动画系统(2)

6.1 动画系统基础2-3_哔哩哔哩_bilibili p316 模型添加Animator组件 动画控制器 AnimatorController AnimatorController 可以通过代码控制动画速度 建立动画间的联系 bool值的设定 trigger p318 trigger点击的时候触发&#xff0c;如喊叫&#xff0c;开枪及换子弹等&#x…...

深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇

序言 反向传播&#xff08;Backpropagation&#xff0c;简称backprop&#xff09;是神经网络训练过程中最关键的技术之一&#xff0c;尤其在多层神经网络中广泛应用。它是一种与优化方法&#xff08;如梯度下降法&#xff09;结合使用的算法&#xff0c;用于计算网络中各参数的…...

自动化设备上位机设计 四

目录 一 设计原型 二 后台代码 一 设计原型 二 后台代码 using SimpleTCP; using SqlSugar; using System.Text;namespace 自动化上位机设计 {public partial class Form1 : Form{SqlHelper sqlHelper new SqlHelper();SqlSugarClient dbContent null;bool IsRun false;i…...

[leetcode hot 150]第二十三题,合并K个升序链表

题目&#xff1a; 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]] 输出&#xff1a;[1,1,2,3,4,4,5,6] 解释&#xff1a…...

MybatisPlus实现插入/修改数据自动设置时间

引言 插入数据时自动设置当前时间&#xff0c;更新数据时自动修改日期为修改时的日期。 使用MybatisPlus的扩展接口MetaObjectHandler 步骤 实现接口 实体类加注解 实现接口 package com.example.vueelementson.common;import com.baomidou.mybatisplus.core.handlers.M…...

Java语言程序设计篇一

Java语言概述 Java语言起源编程语言最新排名名字起源Java语言发展历程Java语言的特点Java虚拟机垃圾回收Java语言规范Java技术简介Java程序的结构Java程序注意事项&#xff1a;注释编程风格练习 Java语言起源 1990年Sun公司提出一项绿色计划。1992年语言开发成功最初取名为Oak…...

Calicoctl工具学习 —— 筑梦之路

官方文档&#xff1a; Calico Documentation | Calico Documentation 插件方式安装 calicoctl 工具 curl -o kubectl-calico -O -L "https://github.com/projectcalico/calicoctl/releases/download/v3.20.0/calicoctl"cp kubectl-calico /usr/bin/kubectl-calic…...

Wormhole Filters: Caching Your Hash on Persistent Memory——泛读笔记

EuroSys 2024 Paper 论文阅读笔记整理 问题 近似成员关系查询&#xff08;AMQ&#xff09;数据结构可以高效地近似确定元素是否在集合中&#xff0c;例如Bloom滤波器[10]、cuckoo滤波器[23]、quotient滤波器[8]及其变体。但AMQ数据结构的内存消耗随着数据规模的增长而快速增长…...

PyTorch学习之torch.transpose函数

PyTorch学习之torch.transpose函数 一、简介 torch.transpose 函数我们用于交换张量的维度。 二、语法 torch.transpose 函数用于交换给定张量的两个维度&#xff0c;其语法如下&#xff1a; torch.transpose(input, dim0, dim1)三、参数 input&#xff1a;待交换维度的张…...

Git仓库介绍

1. Github GitHub 本身是一个基于云端的代码托管平台&#xff0c;它提供的是远程服务&#xff0c;而不是一个可以安装在本地局域网的应用程序。因此&#xff0c;GitHub 不可以直接在本地局域网进行安装。 简介&#xff1a;GitHub是最流行的代码托管平台&#xff0c;提供了大量…...

人工智能笔记分享

文章目录 人工智能图灵测试分类分类与聚类的区别&#xff08;重点&#xff09;分类 (Classification)聚类 (Clustering) 特征提取 分类器&#xff08;重点&#xff09;特征提取为什么要进行特征提取&#xff1f;&#xff08;重点&#xff09;分类器 训练集、测试集大小&#x…...

秋招提前批面试经验分享(上)

⭐️感谢点开文章&#x1f44b;&#xff0c;欢迎来到我的微信公众号&#xff01;我是恒心&#x1f60a; 一位热爱技术分享的博主。如果觉得本文能帮到您&#xff0c;劳烦点个赞、在看支持一下哈&#x1f44d;&#xff01; ⭐️我叫恒心&#xff0c;一名喜欢书写博客的研究生在读…...

[AIGC] ClickHouse的表引擎介绍

ClickHouse是一种高性能的列式数据库管理系统&#xff0c;支持各种不同的表引擎。表引擎是数据库系统中的核心组件&#xff0c;它定义了数据的存储方式和访问方式。本文将介绍ClickHouse中常见的表引擎及其特点。 文章目录 一、MergeTree引擎二、ReplacingMergeTree引擎三、Sum…...

关于新装Centos7无法使用yum下载的解决办法

起因 之前也写了一篇类似的文章&#xff0c;但感觉有漏洞&#xff0c;这次想直接把漏洞补齐。 问题描述 在我们新装的Centos7中&#xff0c;如果想要用C编程&#xff0c;那就必须要用到yum下载&#xff0c;但是&#xff0c;很多新手&#xff0c;包括我使用yum下载就会遇到一…...

OpenEarthMap:全球高分辨率土地覆盖制图的基准数据集(开源来下载!!!)

OpenEarthMap由220万段5000张航拍和卫星图像组成&#xff0c;覆盖6大洲44个国家97个地区&#xff0c;在0.25-0.5m的地面采样距离上人工标注8类土地覆盖标签。我们提供8类标注:裸地、牧场、已开发空间、道路、树木、水、农业用地和建筑。类选择与现有的具有亚米GSD的产品和基准数…...