Python入门到精通(五)——Python数据容器

Python数据容器

前言

一、list 列表

1、定义

2、列表的下标索引

3、常用操作

 4、列表的遍历

二、tuple 元组

1、定义

2、常用操作

三、str 字符串

1、定义

2、常用操作

四、容器序列的切片

五、set 集合

1、定义

​编辑

2、常用操作

六、dict 字典、映射

1、定义

2、常用操作

七、总结

1、数据容器特点对比

2、通用功能


前言

1、定义:一种可以存储多个元素的Python数据类型

2、类型:list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)

一、list 列表

1、定义

  • 列表内的每一个数据,称之为元素
  • [ ] 作为标识
  • 列表内每一个元素之间用, 逗号隔开
  • 列表可以一次存储多个数据,且可以为不同的数据类型支持嵌套
  • 数据是有序存储的(有下标序号)
  • 允许重复数据存在
  • 可以修改(增加或删除元素等)

代码示例

# 定义一个列表
my_list1 = ["momo_via", 2024, True]
print(my_list1)  # ['momo_via', 2024, True]
print(type(my_list1))  # <class 'list'>
# 定义一个嵌套的列表
my_list2 = ["CSDN", my_list1]
print(my_list2)  # ['CSDN', ['momo_via', 2024, True]]
print(type(my_list2))  # <class 'list'>

2、列表的下标索引

  • 列表[下标],即可取出
  • 列表的每一个元素,都有编号称之为下标索引
  • 从前向后的方向,编号从0开始递增
  • 从后向前的方向,编号从-1开始递减

嵌套列表

代码示例

# 列表的下标索引
# 正向
print(my_list1[0])  # momo_via
# 反向
print(my_list1[-1])  # True
# 取出嵌套列表的元素
print(my_list2[-1][0])  # momo_via

3、常用操作

编号

使用方式

作用

1

列表.append(元素)

向列表中追加一个元素

2

列表.extend(容器)

将数据容器的内容依次取出,追加到列表尾部

3

列表.insert(下标元素)

在指定下标处,插入指定的元素

4

del 列表[下标]

删除列表指定下标元素

5

列表.pop(下标)

除列表指定下标元素

6

列表.remove(元素)

从前向后,删除此元素第一个匹配项

7

列表.clear()

清空列表

8

列表.count(元素)

统计此元素在列表中出现的次数

9

列表.index(元素)

查找指定元素在列表的下标

找不到报错ValueError

10

len(列表)

统计容器内有多少元素

代码示例

# 列表的常用方法
# 列表的查询  列表.index(元素)
my_list = ["momo_via", 2024, True]
print(my_list.index("momo_via"))  # 0
# 修改指定位置的值
my_list[0] = "CSDN"
print(my_list)  # ['CSDN', 2024, True]
# 插入元素  列表.insert(下标,元素)
my_list.insert(1, "best")
print(my_list)  # ['CSDN', 'best', 2024, True]
# 追加单个元素(尾部) 列表.append(元素)
my_list.append("python")
print(my_list)  # ['CSDN', 'best', 2024, True, 'python']
# 追加一批元素  列表.extend(元素)
my_list3 = [1, 2, 3]
my_list.extend(my_list3)
print(my_list)  # ['CSDN', 'best', 2024, True, 'python', 1, 2, 3]
# 删除列表元素
# del 列表
del my_list[3]
print(my_list)  # ['CSDN', 'best', 2024, 'python', 1, 2, 3]
# 列表.pop(下标) 取出元素后删除
ele = my_list.pop(3)
print(f"列表元素{my_list},被取出的元素是:{ele}")  # 列表元素['CSDN', 'best', 2024, 1, 2, 3],被取出的元素是:python
# 删除某元素在列表中的第一个匹配项
my_list = ['CSDN', 'CSDN', 'best', 2024, 'CSDN']
my_list.remove('CSDN')
print(my_list)  # ['CSDN', 'best', 2024, 'CSDN']
# 清空列表
my_list.clear()
print(my_list)  # []
# 统计列表内某元素的数量
my_list = ['CSDN', 'CSDN', 'best', 2024, 'CSDN']
count = my_list.count('CSDN')
print(count)  # 3
# 统计列表中全部的元素数量
count = len(my_list)
print(count)  # 5

 4、列表的遍历

                                          可以使用while循环和for循环

代码示例

while 循环

# while 循环
def list_while():"""使用while循环遍历列表:return: None"""my_list = ['CSDN', 'best', 2024, 'python']# 循环控制变量通过下标索引来控制,默认0# 每一次索引将下标变量 +1index = 0while index<len(my_list):ele = my_list[index]print(ele)index += 1list_while()

for循环

# for 循环
def list_for():"""使用for循环遍历列表:return: None"""my_list = ['CSDN', 'best', 2024, 'python']# 循环控制变量通过下标索引来控制,默认0# 每一次索引将下标变量 +1for index in my_list:print(index)list_for()

二、tuple 元组

1、定义

  • 定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型
  • 元组只有一个数据,这个数据后面要添加逗号
  • 元组也支持嵌套
  • 不可以修改元组
  • 可以修改元组内的list的内容(修改元素、增加、删除、反转等)

  • 可以使用for循环和while循环遍历

     

代码示例

# 定义元祖
t1 = ("momo_via", 2024, True)
t2 = ()
t3 = tuple()
t4 = ("csdn",)  # 单个元素的元组后面要加一个逗号
print(type(t1))
print(type(t2))
print(type(t3))
print(type(t4))
# 嵌套元组
t5 = (1, 2, 3)
t6 = (t1, t5)
print(t6)  # (('momo_via', 2024, True), (1, 2, 3))
# 下标索引取内容
print(t6[0][1])  # 2024

2、常用操作

编号

方法

作用

1

index()

查找某个数据,如果数据存在返回对应的下标,否则报错

2

count()

统计某个数据在当前元组出现的次数

3

len(元组)

统计元组内的元素个数

代码示例

# 元组的使用
t7 = ("momo_via", 2024, True, 2024, "csdn")
# index
print(t7.index(2024))  # 1
# count
print(t7.count(2024))  # 2
# len
print(len(t7))  # 5
# while 循环遍历
index = 0
while index < len(t7):print(t7[index])index += 1
# for 循环遍历
for i in t7:print(i)

三、str 字符串

1、定义

  • 从前向后,下标从0开始
  • 从后向前,下标从-1开始
  • 无法修改,如果必须要做,只能得到一个新的字符串,旧的字符串是无法修改
  • 支持while循环和for循环
  • 只可以存储字符串
  • 允许重复字符串存在

2、常用操作

编号

操作

说明

1

字符串[下标]

根据下标索引取出特定位置字符

2

字符串.index(字符串)

查找给定字符的第一个匹配项的下标

3

字符串.replace(字符串1, 字符串2)

将字符串内的全部字符串1,替换为字符串2

不会修改原字符串,而是得到一个新的

4

字符串.split(字符串)

按照给定字符串,对字符串进行分隔

不会修改原字符串,而是得到一个新的列表

5

字符串.strip()

字符串.strip(字符串)

移除首尾的空格和换行符或指定字符串

6

字符串.count(字符串)

统计字符串内某字符串的出现次数

7

len(字符串)

统计字符串的字符个数

 代码示例

my_str = "CSDN IS BEST"
# 通过下标索引取值
print(my_str[-1])  # T
# index  索引
print(my_str.index("IS"))  # 5
# replace 替换
new_my_str = my_str.replace("BEST", '最好的')
print(new_my_str)
# split 分割
print(my_str.split(' '))  # ['CSDN', 'IS', 'BEST']
# strip 规整操作
my_str = "   CSDN IS BEST   "
# 默认去除前后空格
print(my_str.strip())  # "CSDN IS BEST"
# 统计某字符出现的次数
print(my_str.count("S"))  # 3
# 统计字符串的长度
print(len(my_str))  # 18

四、容器序列的切片

  • 内容连续、有序,可使用下标索引的一类数据容器
  • 列表、元组、字符串,均可以可以视为序列。
  • 序列[起始:结束:步长]

起始可以省略,省略从头开始

结束可以省略,省略到尾结束

步长可以省略,省略步长为1(可以为负数,表示倒序执行)

代码示例

# 对list进行切片,从1开始,4结束,步长为1
my_list = [0,1,2,3,4,5,6]
# 步长默认为1 可以省略不写
print(my_list[1:4]) # [1, 2, 3]
# 对tuple进行切片,从头开始,到最后结束,步长为1
my_tuple = (0,1,2,3,4,5,6)
# 起始和结束可以不写,默认头和尾,步长默认1
print(my_tuple[:])  # (0, 1, 2, 3, 4, 5, 6)
# 对str进行切片,从头开始,到最后结束,步长为2
my_str = "01234567"
print(my_str[::2])  # 0246
# 对str进行切片,从头开始,到最后结束,步长为-1
# 等同于序列反转
print(my_str[::-1])  # 76543210
# 对列表进行切片,从3开始,到1结束,步长为-1
print(my_list[3:1:-1])  # [3, 2]
# 对元组进行切片,从头开始,到尾结束,步长为-2
print(my_tuple[::-2])  # (6, 4, 2, 0)

五、set 集合

1、定义

  • 支持 for循环,不支持while循环
  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标索引)
  • 不允许重复数据存在
  • 可以修改(增加或删除元素等)

2、常用操作

编号

操作

说明

1

集合.add(元素)

集合内添加一个元素

2

集合.remove(元素)

移除集合内指定的元素

3

集合.pop()

从集合中随机取出一个元素

4

集合.clear()

将集合清空

5

集合1.difference(集合2)

得到一个新集合,内含2个集合的差集

原有的2个集合内容不变

6

集合1.difference_update(集合2)

在集合1中,删除集合2中存在的元素

集合1被修改,集合2不变

7

集合1.union(集合2)

得到1个新集合,内含2个集合的全部元素

原有的2个集合内容不变

8

len(集合)

得到一个整数,记录了集合的元素数量

代码示例

# 定义
my_set = {"CSDN", "python", 2024}
my_set2 = set()
# 添加新元素
my_set.add("momo_via")
print(my_set)  # {2024, 'momo_via', 'python', 'CSDN'}
# 移除元素
my_set.remove(2024)
print(my_set)  # {'python', 'momo_via', 'CSDN'}
# 随机取出一个元素
print(my_set.pop())  # CSDN
# 清空集合
print(my_set.clear())  # None
# 取两个集合的差集
my_set = {"CSDN", "python", 2024}
my_set2 = {"CSDN", "momo_via", 2024}
print(my_set.difference(my_set2))  # {'python'}
# 消除两个集合的差集
my_set.difference_update(my_set2)
print(my_set)  # {'python'}
print(my_set2)  # {2024, 'CSDN', 'momo_via'}
# 两个集合合并为一个
print(my_set.union(my_set2))  # {'python', 'CSDN', 2024, 'momo_via'}
# 统计集合元素数量
print(len(my_set))  # 1
# 集合的遍历
# 不支持下标索引,所以不能用while
for i in my_set2:print(i)  # 2024 CSDN momo_via

六、dict 字典、映射

1、定义

  • 使用{ }存储原始,每一个元素是一个键值对
  • 每一个键值对包含Key和Value(用冒号分隔)
  • 键值对之间使用逗号分隔
  • Key和Value可以是任意类型的数据(key不可为字典)
  • 可以容纳多个数据
  • 可以通过Key获取到Value,Key不可重复(重复会覆盖)
  • 不支持下标索引
  • 可以修改(增加或删除更新元素等)
  • 支持for循环,不支持while循环

代码示例

# 定义字典
my_dict = {"momo_via": 24, "csdn": 2024}
# 定义空字典
my_dict2 = {}
my_dict3 = dict()
# 基于key取value
print(my_dict["csdn"])  # 2024
# 字典的嵌套
stu_score = {"张三": {"语文": 80,"数学": 98,"英语": 92,},"李四": {"语文": 95,"数学": 88,"英语": 85,}
}
print(stu_score["张三"]["语文"])  # 80
# 新增元素
stu_score = {"张三": 88,"李四": 95
}
stu_score["王二"] = 90
print(stu_score)  # {'张三': 88, '李四': 95, '王二': 90}
# 更新元素
stu_score["王二"] = 85
print(stu_score)  # {'张三': 88, '李四': 95, '王二': 85}
# 删除元素
stu_score.pop("王二")
print(stu_score)  # {'张三': 88, '李四': 95}
# 清空元素
print(stu_score.clear())  # None
# 获取全部的key
stu_score = {"张三": 88,"李四": 95
}
keys = stu_score.keys()
print(keys)  # dict_keys(['张三', '李四'])
# 遍历字典
# 通过获取到全部的key
for i in keys:print(i)print(stu_score[i])
# for 循环
for i in stu_score:print(i)print(stu_score[i])
# 字典元素个数
print(len(stu_score))  # 2

2、常用操作

编号

操作

说明

1

字典[Key]

获取指定Key对应的Value

2

字典[Key] = Value

添加或更新键值对

3

字典.pop(Key)

取出Key对应的Value并在字典内删除此Key的键值对

4

字典.clear()

清空字典

5

字典.keys()

获取字典的全部Key,可用于for循环遍历字典

6

len(字典)

计算字典内的元素数量

练习题

代码示例

# 组织字典记录数据
info_dict = {'王力红': {"部门": "科技部","工资": 3000,"级别": 1},'周杰轮': {"部门": "市场部","工资": 5000,"级别": 2},'林俊结': {"部门": "市场部","工资": 7000,"级别": 3},'张雪有': {"部门": "科技部","工资": 4000,"级别": 1},'刘德滑': {"部门": "市场部","工资": 6000,"级别": 2},
}
# for 循环遍历字典
for name in info_dict:# if 条件判断符合条件员工if info_dict[name]["级别"] == 1:# 升职加薪操作# 获取到员工的信息字典employee_info_dict = info_dict[name]# 修改员工的信息employee_info_dict["级别"] = 2  # 级别+1employee_info_dict["工资"] += 1000  # 工资+1000# 将员工的信息更新回info_dictinfo_dict[name] = employee_info_dict
# 输出结果
print(info_dict)

输出

七、总结

1、数据容器特点对比

2、通用功能

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

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

相关文章

Celery入门

Celery 官网&#xff1a;Celery - Distributed Task Queue — Celery 5.3.6 documentation Celery 官方文档英文版&#xff1a;Celery - Distributed Task Queue — Celery 5.4.0rc1 documentation Celery 官方文档中文版&#xff1a;Celery - 分布式任务队列 — Celery 3.1.…

Linux网络编程——网络初识

文章目录 1. 网络协议初识1.1 为什么要有网络协议1.2 协议分层 2. OSI七层模型3. TCP/IP五层&#xff08;或四层&#xff09;模型4. 网络传输基本流程5. 以太网通信 1. 网络协议初识 1.1 为什么要有网络协议 早期计算机是独立的&#xff0c;如果要进行数据交互&#xff0c;就…

超越人类上限的策划:百度输入法在候选词区域植入广告

一位 V2EX 用户最新发帖称&#xff0c;百度输入法的最新版本中引入了一个新功能&#xff0c;将广告直接植入到候选词区域。 具体表现为&#xff0c;当用户输入某些关键词时&#xff0c;候选词区域会显示与输入内容相关的广告链接。例如&#xff0c;用户输入“招商”时&#xf…

《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树(代码python实践)

文章目录 第5章 决策树—python 实践书上题目5.1利用ID3算法生成决策树,例5.3scikit-learn实例《统计学习方法:李航》笔记 从原理到实现(基于python)-- 第5章 决策树 第5章 决策树—python 实践 import numpy as np import pandas as pd import matplotlib.pyplot as plt …

能源巨头施耐德电气遭遇勒索软件攻击

Bleeping Computer 网站消息&#xff0c;媒体透露能源管理和自动化巨头施耐德电气公司近期遭到 Cactus 勒索软件攻击&#xff0c;导致公司大量数据被盗。 施耐德电气是一家法国跨国公司&#xff0c;主要生产能源和自动化产品&#xff0c;从大卖场的家用电气元件到企业级工业控制…

后序遍历的线索化二叉树

对于后序遍历&#xff0c;需要明确&#xff0c;往往叶子结点&#xff0c;只能指向右子树&#xff08;如果右子树存在的情况&#xff09;&#xff0c;或者指向该结点&#xff08;因为这才是后序遍历&#xff09;&#xff0c;同样在进行退出到前一次递归的时候&#xff0c;我们要…

怎么控制Element的数据树形表格展开所有行;递归操作,打造万能数据表格折叠。

HTML <el-button type"success" size"small" click"expandStatusFun"> <span v-show"expandStatusfalse"><i class"el-icon-folder-opened"></i>展开全部</span><span v-show"expan…

如何使用Python+Flask搭建本地Web站点并结合内网穿透公网访问?

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架&#xff0c;让我们可以使用Python语言快速实现一个网站或Web服务&#xff0c;本期教程…

OpenAI发布新模型!ChatGPT性能重磅提升,API大幅降价,GPT-4 「变懒」被修复

OpenAI 对ChatGPT进行了大更新&#xff1a;推出了新一代的嵌入模型&#xff0c;对GPT-4 Turbo模型进行了更新&#xff0c;并将很快对GPT-3.5 Turbo的API进行大幅降价&#xff0c;GPT-4「变懒」行为也被修复。 接下来二狗就带大家看看ChatGPT的这次详细更新。 推出新的嵌入模型…

电脑护眼模式怎么设置?4个有效方法保护眼睛!

“我感觉每天使用电脑的时间久了&#xff0c;眼睛总是不太舒服。电脑护眼模式怎么设置呢&#xff1f;有什么比较好用的方法可以推荐吗&#xff1f;” 如果长时间使用电脑&#xff0c;或许会让我们感到用眼疲劳。电脑护眼模式是现代人常用的电脑设置之一&#xff0c;它能有效地减…

大数据学习之Redis,十大数据类型的具体应用(一)

目录 3. 数据类型命令及落地应用 3.1 备注 3.2 Redis字符串&#xff08;String&#xff09; 单值单value 多值操作 获取指定区间范围内的值 数值增减 获取字符串长度和内容追加 分布式锁 getset(先get后set) 3.3 Redis列表&#xff08;List&#xff09; 简单说明 …

switch-case的简单使用

签名&#xff1a;但行好事&#xff0c;莫问前程。 文章目录 前言一、switch二、case三、break四、default总结 前言 记录一下switch-case的简单使用。 一、switch switch中的表达式只能是特定的数据类型。如下&#xff1a; byteshortcharint枚举&#xff08;jdk5.0&#xff…

Java API 操作 HDFS

Java API 操作HDFS一般有两种方式&#xff1a; 使用HDFS客户端配置文件自动配置 Java 代码中配置 一 使用HDFS客户端配置 1.1 下载HDFS客户端配置 1.2 创建Maven项目 创建Maven项目&#xff0c;将下载的客户端配置文件 core-site.xml、hdfs-site.xml 放入resources目录下&…

echart 完整例子

<!--集团用电数据柱状图--> <template><div class"scsj-wsd"><div class"type-btns"><divclass"btns-item":class"currType 0 ? active : "click"change(0)">年</div><divclass&q…

华为OD-华为机试精讲500篇系列文章目录介绍(持续补充ing)

目录 背景介绍 什么是华为OD&#xff1f; OD现状 OD趋势 华为OD机考刷题攻略 1、刷题资料&#xff1a;投递岗位通过筛选后提供 2、注意事项&#xff1a; 真题代码目录 背景介绍 经济下行的这几年&#xff0c;每个人都感同身受&#xff0c;如何让自己在芸芸众生中脱颖而…

【高效开发工具系列】Wolfram Alpha

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Unity3d Cinemachine篇(三)— FreeLook

文章目录 前言一、使用FreeLook制造第三人称跟随效果1. 创建一个游戏物体2. 创建FreeLook相机4. 完成 前言 上一期我们简单的使用了Dolly CamerawithTrack相机&#xff0c;这次我们来使用一下FreeLook 一、使用FreeLook制造第三人称跟随效果 1. 创建一个游戏物体 游戏物体比较…

(十)springboot实战——springboot3下的webflux项目mysql数据库事务处理

前言 WebFlux 是 Spring Framework 5.0 中引入的一种新型反应式编程模型&#xff0c;支持非阻塞 I/O&#xff0c;适用于高并发、高吞吐量的应用程序。在 WebFlux 应用程序中使用事务需要注意以下几点。使用 Reactive R2DBC&#xff1a;WebFlux 支持使用 Reactive R2DBC 访问关…

WebService的services.xml问题

WebService有多种实现方式&#xff0c;这里使用的是axis2 问题&#xff1a; 在本地开发&#xff0c;访问本地的http://localhost:8080/services/ims?wsdl&#xff0c;正常访问 但是打成jar包&#xff0c;不管是linux还是window启动&#xff0c;都访问不到&#xff0c;报错…

金线检测步骤

半导体行业,金线检测是必不可以少的一个检测项,除了焊点,die面,手指以外的必检项目. 重难点在于金线的提取,算法多种多样,找到适合才是关键,涉及到打光,图像处理,这里不做深入分析,软件和硬件配合好才能做的最好. 经典算法Block分析,结合图像检测. 高斯算法提取 边缘检测算法提…