Python数据容器

  • 容器定义
  • 列表 list
    • 定义
    • 下标索引
    • 列表的方法
      • 查询指定元素的下标 index(元素)
      • 修改指定下标的元素值
      • 插入元素 insert(index,元素)
      • 追加一个元素 append(元素)
      • 追加一批元素 extend(容器)
      • 删除指定下标的元素
      • 删除指定元素的第一次出现 remove(元素)
      • 清空列表 clear()
      • 统计列表中指定元素的个数 count(元素)
      • 列表的元素个数 len()
    • 遍历列表
      • while
      • for
  • 元组
    • 定义
    • 下标索引
    • 元组操作
    • 元组遍历
  • 字符串
    • 下标索引
    • 大小比较
    • 操作
      • index(字符串)
      • 统计某字符出现的次数 count()
      • 字符串的长度 len()
      • 字符串替换 replace()
      • 字符串分割 split
      • 规整操作1 strip()
      • 规整操作2 strip(字符串)
  • 序列容器
    • 序列切片
  • 集合 set
    • 定义
    • 常用操作
      • 添加元素 add()
      • 移除元素 remove()
      • 随机取出一个元素 pop()
      • 清空集合 clear()
      • 取出两个集合的差集 difference
      • 消除两个集合的差集 difference_update
      • 两个集合合并 union
      • 统计集合的元素个数 len()
    • 遍历集合
  • 字典
    • 定义
    • 访问键值对
    • 嵌套
    • 常用操作
      • 新增元素 修改元素
      • 删除指定键值对 pop(key)
      • 清空字典 clear()
      • 获得全部key keys()
      • 遍历字典方法1
      • 遍历字典方式2
      • 统计字典的元素个数 len()
  • 容器的通用操作
    • len()
    • 容器中最大或最小元素:max()与min()
    • 容器的转换函数
    • 排序功能 sorted()
  • 总结

容器定义

可以容纳多份数据的数据类型,每份数据称为元素。元素可以为任意数据类型,不同元素可以为不同类型。
列表使用可以修改的,允许重复元素的出现

列表 list

  • 支持下标索引
  • 可以被修改(增删改)
  • 支持重复元素的出现

定义

列表类似数组,可以有多维。使用中括号来定义,元素之间用逗号隔开

变量 = [元素1,,元素2,...]
变量 =list() # 空列表

可以嵌套列表,类似多维数组。

num=[[1,2,3],[1,2,3,4]]# 

下标索引

列表为有序存储
可以正向,从0开始
在这里插入图片描述
可以反向,从-1开始
下标

列表的方法

在这里插入图片描述

查询指定元素的下标 index(元素)

功能:寻找指定元素在列表的正向下标。若不存在,则会报错ValueError
语法:列表变量.index(元素)

修改指定下标的元素值

语法:列表变量[下标]=新值

插入元素 insert(index,元素)

功能:在指定的下标插入指定的元素,原本的元素会被后移
语法:列表.insert(index,元素)
有两种情况:

  • index小于最大下标,则按照index插入
  • index大于等于最大下标,则在列表尾部插入
l=[0,1,2]
l.insert(3,3)# [0,1,2,3] 在末尾插入

追加一个元素 append(元素)

功能:在列表末尾插入元素
语法:列表.append(元素)

追加一批元素 extend(容器)

功能:将容器中的元素都追加到列表中
语法:列表.extend(容器)

删除指定下标的元素

语法:

  • del 列表[下标]
  • 列表.pop[下标]:会返回被删除的元素

若指定的下标没有数据,会报错

删除指定元素的第一次出现 remove(元素)

功能:寻找指定元素,将第一次出的删除
语法:列表.remove(元素)

若元素不存在,会报错ValueError

清空列表 clear()

语法:列表.clear()

统计列表中指定元素的个数 count(元素)

语法:列表.count(元素)。会返回个数,类型为int

列表的元素个数 len()

语法:len(列表)

遍历列表

可以使用while与for

while

继续循环的条件为当前遍历到的下标小于列表的长度
while循环可以遍历

my_list=[0,1,2,3]
index=0
while index < len(my_list):# 循环条件print(my_list[index])index +=1# 循环变量增加

for

for循环是将列表中的各个元素一个个提取到临时变量

my_list=[0,1,2,3]for data in my_list:print(data)

元组

  • 支持下标索引,数据有序
  • 可以重复
  • 不可修改,但如果元组里嵌套了如列表等可以修改的容器,可以修改这些容器
  • 数据可以为任意类型

定义

使用小括号来定义,元素可以为任意数据类型。
注意:若元组只有一个数据,则要在后面加上逗号,否则不是元组类型

(元素,元素,...)
tuple(元素,元素,...)
(元素,)# 只有一个元素,要加上逗号

元组也可以嵌套

下标索引

与列表一样的规则。

元组操作

只有 index(元素),count(元素)与len(元组)

元组遍历

与列表一样,使用while与for

字符串

  • 只能存储字符
  • 支持下标索引
  • 不可修改

下标索引

与列表一样。

大小比较

从前向后,逐位比较字符串中对应字符的ASCII码大小,只要有一位大则大
在这里插入图片描述

操作

index(字符串)

功能:在字符串中,指定字符串第一次出现的下标。不存在,则ValueError
语法:字符串.index(字符串)

统计某字符出现的次数 count()

字符串的长度 len()

字符串替换 replace()

语法:字符串.replace(字符串1, 字符串2)
功能:将 字符串 中所有的 字符串1都替换为字符串2
注意:并没有修改字符串,而是生成了新的字符串,会返回一个替换后的字符串

字符串分割 split

语法:字符串.split(分割符字符串)
语法:按照指定的分割符字符串,将字符串分割为多个字符串,并存入列表对象中。
注意:字符串本身不会改变,而是得到一个列表对象。

str1="hello"
str_list=str1.split("ll")
print(str_list,type(str_list))
输出:['he', 'o'] <class 'list'>

规整操作1 strip()

语法:字符串.strip()
功能:去除前后空格
注意:字符串本身不会改变,会返回一个新字符串

str4="   hello   "
print(str4.strip())

规整操作2 strip(字符串)

语法:字符串.strip(字符串)
功能:去除前后指定的字符串
注意:字符串本身不会改变,会返回一个新字符串

str5="12hello21"
print(str5.strip("12"))

注意:传入的是"12",其实是:“1"和"2” 都会被移除,是按照单个字符进行处理,满足其中一个字符即可。
其实也就是判断字符串头尾字符指定字符串中是否存在。存在则将其删除,然后继续下一个。若头尾都不存在,则结束

序列容器

内容连续、有序、可以使用下标索引的一类容器。
列表、元组、字符串,均可以视为序列。

序列切片

从序列中取出一个子序列,对原序列无影响。
子序列的数据类型与原序列相同

语法:序列[起始下标:结束下标:步长]

  • 起始下标:从何处开始,可以留空,留空代表从头开始
  • 结束下标:从何处结束,注意子序列中不包含结束下标的数据,留空代表截取到尾部
  • 步长:间隔。如步长为2,代表每次跳过一个元素取。
    步长可以为负数,反向取数,注意此时起始与结束下标也要反向标记
my_list=[0,1,2,3,4,5,6,7,8]print(my_list[1:4])# [1,2,3] 下标为4的值不会取出# 起始下标留空代表从头开始,结束下标留空代表截取到尾部
print(my_list[:])# 步长为2
print(my_list[::2])# [0,2,4,6,8]# 步长为负数,反向取
print(my_list[::-1])# [8, 7, 6, 5, 4, 3, 2, 1, 0] 倒序输出# 起始下标与结束下标也要反向
print(my_list[4:1:-1])# [4, 3, 2]# 步长为-2
print(my_list[::-2])# [8, 6, 4, 2, 0]

集合 set

与序列容器相比,集合中的元素不可重复而且无序。元素可以为任意数据类型。

  • 不可重复,会去重
  • 乱序
  • 元素为任意类型
  • 可以修改

定义

使用大括号

变量={元素,元素...}
变量=set()

常用操作

添加元素 add()

语法:集合.add(元素)

移除元素 remove()

语法:集合,remove(元素)。若指定元素不存在,则ValueError

随机取出一个元素 pop()

语法:集合.pop()
功能:会从集合中随机取出一个元素,会返回元素。集合本身被修改,元素被删除。
若集合为空,则会报错KeyError

清空集合 clear()

语法:集合.clear()

取出两个集合的差集 difference

语法:集合1.difference(集合2)
功能:取出集合1与集合2的差集,即集合1有而集合2没有的
会返回一个新的集合,集合1与集合2不会改变。

set1={1,2,3}
set2={1,5,6}
set3=set1.difference(set2)# {2,3}
set4=set2.difference(set1)# {5,6}

消除两个集合的差集 difference_update

语法:集合1.difference_update(集合2)
功能:在集合1中,删除与集合2相同的元素
集合1会被修改,集合2不变

set1={1,2,3}
set2={1,5,6}
set1.difference_update(set2)
print(set1)# {2,3}

两个集合合并 union

语法:集合1.union(集合2)
功能:将集合1与集合2组合成新集合
返回新集合,集合1与集合2不变

统计集合的元素个数 len()

语法:len(集合)

遍历集合

由于集合不支持下标索引,因此不能使用while来遍历集合。

可以使用for循环来遍历

set1={1,2,3}
for data in set1print(data)

字典

包含key与value,通过key得到value。

  • key不可重复,只包含最后一个出现的key:value
  • key与value可以为任意类型,但key不能为字典、列表与集合
  • 不支持下标索引

定义

使用大括号,存储的元素为一个个键值对。

变量={key:value,key:value}
变量=dict()

访问键值对

字典[key]:返回对应的value

嵌套

mydict={"name":"liu","GPA":{# 字典嵌套"Math":100,"English":58},"No":5}
math=mydict["GPA"]["Math"]
print(math)

常用操作

新增元素 修改元素

语法:字典[key]=value
功能:

  • 若key不存在,则会新增
  • 若key存在,则会修改

删除指定键值对 pop(key)

语法:字典.pop(key)
功能:删除指定key的键值对,会返回value。若key不存在则会KeyError

清空字典 clear()

语法:字典.clear()

获得全部key keys()

语法:字典.keys()
功能:得到字典所有的key,会返回一个类型为< dict_keys >

dict1={12:"12",False:True,"12":35}
keys=dict1.keys()
print(keys)# dict_keys([12, False, '12'])

遍历字典方法1

利用keys()得到所有的keys,再加上for循环

keys=dict1.keys()
for key in keys:print(key,dict1[key])

遍历字典方式2

直接利用for循环,利用for循环得到key

for key in dict1:print(key,dict1[key])

统计字典的元素个数 len()

容器的通用操作

len()

容器中最大或最小元素:max()与min()

语法:max(容器)或min(容器)
功能:返回所求值
字典中,寻找的是最大或最小的key
在字符串中,寻找的是最大或最小的字符

容器的转换函数

  • list(容器):字符串会将各个字符作为元素,字典会将key作为元素,丢失value

  • str(容器):字典会保留value。注意各种容器会包含对应的括号
    在这里插入图片描述

  • tuple(容器):字符串会将各个字符作为元素,字典会将key作为元素,丢失value

  • set(容器):字符串会将各个字符作为元素,字典会将key作为元素,丢失value

    在这里插入图片描述

排序功能 sorted()

语法:sorted(容器,True/False)
功能:对指定容器的元素进行排序,第二个参数默认为True,代表从小到大False代表从大到小。
会返回一个新列表容器对原容器没有影响
字符串对字符进行排序,字典对key进行排序,会丢失value。
在这里插入图片描述

总结

在这里插入图片描述

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

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

相关文章

SD-WAN组网如何帮助企业降低网络成本?

企业在构建IT网络时&#xff0c;常常面临节省费用和提升效益的挑战。IT开销主要包括设备、网络和维护成本。利用OgCloud的SD-WAN组网方案&#xff0c;企业可以有效地应对这些问题。 企业专线网络的高成本问题 企业专线的费用较高&#xff0c;而且数据不能同时在多条专线上传输。…

[FreeRTOS 功能应用] 互斥访问与回环队列 功能应用

文章目录 一、基础知识点二、代码讲解三、结果演示四、代码下载 一、基础知识点 [FreeRTOS 基础知识] 互斥访问与回环队列 概念 [FreeRTOS 内部实现] 互斥访问与回环队列 [FreeRTOS 内部实现] 创建任务 xTaskCreate函数解析 本实验是基于STM32F103开发移植FreeRTOS实时操作系…

“论微服务架构及其应用”写作框架,软考高级,系统架构设计师

论文真题 论微服务架构及其应用近年来&#xff0c;随着互联网行业的迅猛发展&#xff0c;公司或组织业务的不断扩张&#xff0c;需求的快速变化以及用户量的不断增加&#xff0c;传统的单块&#xff08;Monolithic&#xff09;软件架构面临着越来越多的挑战&#xff0c;已逐渐…

关于DrawTools的分析- 一个优秀的C#开源绘图软件

国外大佬&#xff0c;曾经写过两个关于DrawTools相关的开源绘图软件。 我更新了一个优化的版本如下图&#xff0c;稍后会发布更新给大家。 需要的用户可发邮件给我 448283544qq.com 应用于AGV地图编辑器如下&#xff1a; 那么这个优于很多普通的画布软件&#xff0c;包含点、…

STM32项目分享:家庭环境监测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.…

系统架构师概述

引言 系统架构设计师是项目开发活动中的众多角色之一&#xff0c;它可以是一个小组或者一个人或者是一个团队&#xff0c;架构师包含建筑师&#xff0c;设计师&#xff0c;创造者&#xff0c;缔造者&#xff0c;可以说架构师就是我们社会各个领域的创造者和缔造者。从组织上划分…

【OS基础】符合AUTOSAR标准的RTAOS-Alarms详解

目录 前言 正文 7.报警Alarms 7.1配置Alarms 7.1.1激活一个任务 7.1.2 设置一个事件 7.1.3报警回调Alarm Callback 7.1.4 增加计数器值 7.2设置Alarms 7.2.1 绝对Alarms 7.2.2 相对Alarm 7.3自启动Alarms 7.4 删除Alarms 7.5确认何时会发生Alarm 7.6非周期Alarm…

Golang | Leetcode Golang题解之第179题最大数

题目&#xff1a; 题解&#xff1a; func largestNumber(nums []int) string {sort.Slice(nums, func(i, j int) bool {x, y : nums[i], nums[j]sx, sy : 10, 10for sx < x {sx * 10}for sy < y {sy * 10}return sy*xy > sx*yx})if nums[0] 0 {return "0"…

网络安全-如何设计一个安全的API(安全角度)

目录 API安全概述设计一个安全的API一个基本的API主要代码调用API的一些问题 BasicAuth认证流程主要代码问题 API Key流程主要代码问题 Bearer auth/Token auth流程 Digest Auth流程主要代码问题 JWT Token流程代码问题 Hmac流程主要代码问题 OAuth比较自定义请求签名身份认证&…

Golang | Leetcode Golang题解之第167题两数之和II-输入有序数组

题目&#xff1a; 题解&#xff1a; func twoSum(numbers []int, target int) []int {low, high : 0, len(numbers) - 1for low < high {sum : numbers[low] numbers[high]if sum target {return []int{low 1, high 1}} else if sum < target {low} else {high--}}r…

示例:WPF中应用Grid的SharedSizeGroup设置整齐的布局

一、目的&#xff1a;应用Grid的SharedSizeGroup设置整齐的布局 二、实现 <ItemsControl ItemsSource"{local:GetStudents Count5}"><ItemsControl.ItemTemplate><DataTemplate><Grid ShowGridLines"True"><Grid.ColumnDefinit…

51单片机STC89C52RC——3.1 数码管静态展示

目的 让数码管在指定位置显示指定数字 一&#xff0c;STC单片机模块 二&#xff0c;数码管 2.1 数码管位置 2.2 生活中用到的数目管 红绿灯 LED数码管在生活中随处可见&#xff0c;洗衣机、电饭煲、热水器、微波炉、冰箱、这些最基本的家用电器上基本都用到了这种7段LED数…

[手机Linux PostmarketOS]一,1加6T真正的手机Linux系统

前面用Linux deploy软件安装了Linux系统在手机&#xff0c;实则不是真正的手机刷成了linux系统&#xff0c;而是通过Linux deploy软件在容器里安装了Linux系统&#xff0c;在使用方面会有诸多限制&#xff0c;并不能发挥Linux的真实强大之处&#xff0c;于是我又百度又谷歌(真不…

51单片机STC89C52RC——5.1 LCD1602液晶显示屏

目录 目的 一&#xff0c;STC单片机模块 二&#xff0c;LCD1602 2.1 模块简介 2.2 针脚 2.3 DDRAM地址与显示器对应关系 2.4 标准字库表 2.5 常用指令 2.6 读写操作 三&#xff0c;创建Keil项目 四&#xff0c;代码 五&#xff0c;代码编译、下载到51单片机 六&a…

掌握Three.js:学习路线,成为3D可视化开发的高手!

学习Three.js可以按照以下路线进行&#xff1a; 基础知识&#xff1a; 首先要了解基本的Web开发知识&#xff0c;包括HTML、CSS和JavaScript。如果对这些知识已经比较熟悉&#xff0c;可以直接进入下一步。 Three.js文档&#xff1a; 阅读Three.js官方文档是学习的第一步。官…

【Flutter 专题】120 Flutter 腾讯移动通讯 TPNS~

1.2 方法使用 小菜按照官网的介绍尝试了一些常用的 API 方式&#xff0c;主要分为应用类&#xff0c;账号类和标签类三种 API&#xff0c;小菜业务中没有应用账号和标签模块&#xff0c;暂未深入研究&#xff1b; 应用接口 API a. 注册推送服务 对于服务的注册初始化&#x…

跟TED演讲学英文:How language shapes the way we think by Lera Boroditsky

How language shapes the way we think Link: https://www.ted.com/talks/lera_boroditsky_how_language_shapes_the_way_we_think? Speaker: Lera Boroditsky Date: November 2017 文章目录 How language shapes the way we thinkIntroductionVocabularySummaryTranscriptA…

目前哪个充电宝品牌比较好?四款优质充电宝分享

在电量成为现代生活不可或缺的生产资源的时代&#xff0c;选择一款优质的充电宝无疑是保证移动设备持续运作的关键。面对市场上众多品牌和型号的充电宝&#xff0c;消费者在选择时可能会感到困惑和迷茫。本文将为您揭示哪些品牌真正代表了耐用性和质量的典范&#xff0c;让自己…

贪心算法—

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优&#xff08;即最有利&#xff09;的选择&#xff0c;从而希望导致结果是全局最好或最优的算法。这种算法并不总是能找到全局最优解&#xff0c;但在某些问题上能提供足够好的解决方案。贪心算法的关键特性包括&#…

51单片机STC89C52RC——6.1 中断系统

一&#xff0c;文字层面理解 反正我看下面的几段文字时脑壳没有正常运转。一个头几个大 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的。 当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求&#xff0c;要求CPU暂停当前的工作&#xff0c;转而去处理这…