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

【python】3_容器

目录

一、列表 list

1.1基本语法

1.2 常用操作方法

1.3 列表的遍历

二、元组 tuple

特点:

三、字符串

常用操作方法:

四、序列

操作方法:切片

五、元素

特点:

 基本语法:

集合常用功能:

六、字典

定义:

注意事项:


什么是容器

        可以存储多个元素的python数据类型

python有哪些数据容器

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

一、列表 list

1.1基本语法

# 定义变量

变量名称 = [元素1, 元素2,... ]

# 空变量

变量名称 = [ ]

变量名称 = list()

# 嵌套

变量名称 = [ [ 元素1,元素2,... ] , [ 元素1,元素2,... ] ]

#下标索引

左到右从0开始,右到左从-1开始

代码示例

list_name = ["aaa", "bbb", "ccc"]
print(list_name)
print(type(list_name))list_name = ["aaa", 123, True]
print(list_name)
print(type(list_name))list_name = [ [1,2,3], [4,5,6] ]
print(list_name[1][1]) # 5
print(list_name[1][-2]) # 5
print(list_name)
print(type(list_name))

1.2 常用操作方法

 查找某元素在列表中的下标索引

语法:列表.index(元素)

修改特定位置的元素值

语法:列表.index [ 下标 ] = 值

指定位置插入元素

语法:列表.insert ( 下标 ,值 )

追加元素,指定元素插入列表尾部

语法1:列表.append( 元素 )

语法2:列表.extend ( 其他数据容器 )

删除元素

语法1:del 列表[ 下标 ]

语法2:列表.pop( 下标 )  # 删除指定元素后返回这个元素的内容

删除元素在列表中第一个匹配的内容

语法:列表.remove( 元素 )

清空列表元素

语法:列表.clear()

统计某元素在列表中的数量

语法:列表.count( 元素 )

统计列表中的所有元素个数

语法:len(列表)

代码示例 

list_name = [1, 2, 3, 4, 5]
print(list_name.index(3)) # 2list_name[2] = -3
print(list_name) # [1, 2, -3, 4, 5]list_name.insert(2, 3)
print(list_name) # [1, 2, 3, -3, 4, 5]list_name.append(6)
print(list_name) # [1, 2, 3, -3, 4, 5, 6]list_name2 = [7, 8]
list_name.extend(list_name2)
print(list_name) # [1, 2, 3, -3, 4, 5, 6, 7, 8]del list_name[3]
print(list_name) # [1, 2, 3, 4, 5, 6, 7, 8]
num = list_name.pop(7)
print(list_name,num) # [1, 2, 3, 4, 5, 6, 7] 8list_name.remove(7)
print(list_name) # [1, 2, 3, 4, 5, 6]print(list_name.count(2)) # 1
print(len(list_name)) # 6list_name.clear()
print(list_name) # []

1.3 列表的遍历

while遍历 

while_list = [1,2,3]
index = 0
while index < len(while_list):element = while_list[index]print(f"列表while_list元素:{element}")index += 1

 for遍历

for_list = [1,2,3,4,5]
for element in for_list:print(f"列表for_list元素:{element}")

二、元组 tuple

特点:
  • 内容不可修改 (若内部嵌套一个 list 则可修改 list 中的内容)
  • 语法: 变量名称 = ( 元素1 , 元素2,...)
  • 单个元素的元组:  变量名称 = ( 元素 ,)
  • 与 list 基本相同
  • 支持for循环和while循环

三、字符串 str

常用操作方法:

将字符串内的全部字符串1,改为字符串2。不会修改原字符串,会得到一个新的字符串:

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

对字符串进行分割,会得到一个新的列表

字符串.split(字符串)

 

其他操作方法与之前相同

代码示例

s = "jian yi"
new_s = s.replace("i", "o")
print(f"新字符串为{new_s}")  # 新字符串为joan yo
s_list = s.split(" ")
print(f"分割前的字符串为:{s}、分割后:{s_list}、分割后类型为:{type(s_list)}")  # 分割前的字符串为:jian yi、分割后:['jian', 'yi']、分割后类型为:<class 'list'>

四、序列

概念:内容连续、有序,可使用下标索引的一类数据容器。

列表、元组、字符串,均可视为序列

操作方法:切片

序列[起始下标:结束下标:步长]  # 步长默认为1

 代码示例

list1 = [1,2,3,4,5,6,7]
new_list1 = list1[1:5]
print(f"{new_list1}")list1 = [1,2,3,4,5,6,7]
new_list1 = list1[5:1:-1]
print(f"{new_list1}")str1 = "0123456789"
new_str1 = str1[::-1] # 等同于反转
print(f"{new_str1}")

五、集合 set

特点:

之前所学容器对内容都可重复的、而元素不支持重复元素

不支持下标索引访问

 基本语法:

#  定义集合字面量

{元素1 ,元素2,...}

#  定义集合变量

变量名称 = {元素1 ,元素2,...}

#  定义空集合

变量名称 = set( )

集合常用功能:

集合内添加一个元素:集合.add(元素)

移除集合内指定元素:集合.remove(元素)

从集合中随机取出一个元素:集合.pop()

将集合清空:集合.clear()

得到新集合,内含两个集合的差集,原有的2个集合内容不变:集合1.difference(集合2)

集合1中删除集合2中存在的元素,集合1会被修改集合2不变:集合1.difference_update(集合2)

两集合相加(不含重复元素):集合1.union(集合2)

得到集合中元素数量:len(集合)

 代码示例

# 集合的定义
set1 = {1,2,3,4,5,6,7,8,8}
set2 = set()
print(f"set1的内容:{set1},类型为:{type(set1)}") # set1的内容:{1, 2, 3, 4, 5, 6, 7, 8},类型为:<class 'set'>
print(f"set2的内容:{set2},类型为:{type(set2)}") # set2的内容:set(),类型为:<class 'set'>
# 添加新元素
set1.add(9)
print(f"set1的内容:{set1}") # set1的内容:{1, 2, 3, 4, 5, 6, 7, 8, 9}、
# 移除元素
set1.remove(9)
print(f"set1的内容:{set1}") # set1的内容:{1, 2, 3, 4, 5, 6, 7, 8}
# 随机取出一个元素
element = set1.pop()
print(f"随机取出来的元素为:{element}") # 1
print(f"set1的内容:{set1}") # set1的内容:{2, 3, 4, 5, 6, 7, 8}
# 清空集合
set1.clear()
print(f"set1的内容:{set1}") # set1的内容:set()
# 取两个集合的差集
set1 = {1,2,3}
set2 = {2,3,4}
set3 = set1.difference(set2)
print(f"set3的内容:{set3}") # set3的内容:{1}
print(f"set1的内容:{set1}") # set1的内容:{1, 2, 3}
print(f"set2的内容:{set2}") # set2的内容:{2, 3, 4}
# 消除两集合的差集
set1.difference_update(set2)
print(f"set1的内容:{set1}") # set1的内容:{1}
print(f"set2的内容:{set2}") # set2的内容:{2, 3, 4}
# 两个集合合并为一个
set1 = {1,2,3}
set2 = {2,3,4}
set3 = set1.union(set2)
print(f"set3的内容:{set3}") # set3的内容:{1, 2, 3, 4}
# 统计集合元素数量
set1 = {1,2,3,4,4,5,6,7,65,74,353}
num = len(set1)
print(f"set1内元素数量为:{num}") # set1内元素数量为:10
# 集合的遍历 --- 不能使用while循环进行,因为不支持下标访问
set1 = {2,3,4}
for element in set1:print(f"集合的元素有:{element}")

六、字典 dict

定义:

# 定义字典变量

dict1 = {key:value,key:value,key:value}

# 定义空字典

dict1 = { }

dict2 = dict()

注意事项:
  • 键值对的key和value可以是任意类型(key不能为字典)
  • 字典内key不允许重复,重复添加等于覆盖原有数据
  • 字典不可用下标索引,而是通过key检索value

代码示例

dict1 = {"张":1,"王":2,"李":3,"赵":4}
print(f"{dict1},类型为:{type(dict1)}") # {'张': 1, '王': 2, '李': 3, '赵': 4},类型为:<class 'dict'>
# 新增元素 | 更新元素
dict1["五"] = 5
dict1["张"] = 10
print(f"新增元素和更新元素后的dict1{dict1}") # 新增元素和更新元素后的dict1{'张': 10, '王': 2, '李': 3, '赵': 4, '五': 5}
# 删除元素
num = dict1.pop("张")
print(f"删除后的dict1{dict1},对应的value为:{num}") # 删除后的dict1{'王': 2, '李': 3, '赵': 4, '五': 5},对应的value为:10
# 获取全部的key
keys = dict1.keys()
print(f"获取的dict1的全部的key为:{keys}") # 获取的dict1的全部的key为:dict_keys(['王', '李', '赵', '五'])
# 遍历字典
for key in keys:print(f"字典的key为:{key}")print(f"字典的value为:{dict1[key]}")for key in dict1:print(f"字典的key为:{key}")print(f"字典的value为:{dict1[key]}")
# 统计字典内元素数量
num = len(dict1)
print(f"字典中元素个数是:{num}") # 字典中元素个数是:4 

相关文章:

【python】3_容器

目录 一、列表 list 1.1基本语法 1.2 常用操作方法 1.3 列表的遍历 二、元组 tuple 特点&#xff1a; 三、字符串 常用操作方法&#xff1a; 四、序列 操作方法&#xff1a;切片 五、元素 特点&#xff1a; 基本语法&#xff1a; 集合常用功能&#xff1a; 六、字…...

数据结构与算法:动态规划dp:背包问题:理论基础(状态压缩/滚动数组)和相关力扣题(416. 分割等和子集、1049.最后一块石头的重量Ⅱ、494.目标和)

背包问题 01背包理论基础 对于01背包问题&#xff0c;物品下标为0到i&#xff0c;对应的重量为weight[0]到weight[i]&#xff0c;价值为value[0]到value[i]&#xff0c;每个物品只可以取或不取&#xff0c;背包最大容量为j的场景。 常见的状态转移方程如下&#xff1a; dp[i…...

数字游牧时代:IT人力外包的范式革命与文明重构

当英国工业革命时期的企业主们将生产环节外包给家庭作坊时&#xff0c;他们不会想到这种生产组织方式会演变为21世纪最复杂的商业形态。IT人力外包行业在经历三十年爆炸式增长后&#xff0c;正在经历一场静默的范式革命。这场革命不仅重构着全球IT产业链的拓扑结构&#xff0c;…...

Qt - 地图相关 —— 3、Qt调用高德在线地图功能示例(附源码)

效果 作者其他相关文章链接:           Qt - 地图相关 —— 1、加载百度在线地图(附源码)           Qt - 地图相关 —— 2、Qt调用百度在线地图功能示例全集,包含线路规划、地铁线路查询等(附源码)           Qt - 地图相关 —— 3、Qt调用…...

cloudberry测试

一、引言 在当今大数据和 AI 飞速发展的时代&#xff0c;数据如同企业的核心资产&#xff0c;其价值不言而喻。数据库作为数据存储、管理和处理的关键工具&#xff0c;更是成为了各个领域的技术基石。无论是金融行业的交易记录处理&#xff0c;还是医疗领域的患者信息管理&…...

RocketMQ、RabbitMQ、Kafka 的底层实现、功能异同、应用场景及技术选型分析

1️⃣ 引言 在现代分布式系统架构中&#xff0c;&#x1f4e9;消息队列&#xff08;MQ&#xff09;是不可或缺的组件。它在系统&#x1f517;解耦、&#x1f4c9;流量削峰、⏳异步处理等方面发挥着重要作用。目前&#xff0c;主流的消息队列系统包括 &#x1f680;RocketMQ、&…...

UWB功耗大数据插桩调研

一、摘要 UWB功耗点 插桩点 日志关键字 电流 蓝牙持锁 BatteryStats的锁统计 vendor_bluetooth_lock 30~40mA 测距 UwbSessionManager.startRanging UwbSessionManager.stoptRanging 或接入fadiKey Uwb状态广播 "com.fadiui.dkservice.action.uwb.state.change&q…...

郭羽冲IOI2024参赛总结

非常荣幸能代表中国参加第 36 36 36 届国际信息学奥林匹克竞赛&#xff08; I O I 2024 IOI2024 IOI2024&#xff09;。感谢 C C F CCF CCF 为我们提供竞赛的平台&#xff0c;感谢随行的老师们一路上为我们提供的帮助与支持。 在每场比赛的前一个晚上&#xff0c;领队、副领…...

03:Spring之Web

一&#xff1a;Spring整合web环境 1&#xff1a;web的三大组件 Servlet&#xff1a;核心组件&#xff0c;负责处理请求和生成响应。 Filter&#xff1a;用于请求和响应的预处理和后处理&#xff0c;增强功能。 Listener&#xff1a;用于监听 Web 应用中的事件&#xff0c;实…...

lx-music落雪音乐-开源免费听歌软件[提供最新音源使用, 支持全网平台, 支持无损音乐下载]

lx-music_落雪音乐 链接&#xff1a;https://pan.xunlei.com/s/VOIpEt1xqf0un-vEQilidhjIA1?pwdgcux#...

129,【2】buuctf [BJDCTF2020]EzPHP

进入靶场 查看源代码 看到红框就知道对了 她下面那句话是编码后的&#xff0c;解码 1nD3x.php <?php // 高亮显示当前 PHP 文件的源代码&#xff0c;通常用于调试和展示代码结构 highlight_file(__FILE__); // 设置错误报告级别为 0&#xff0c;即不显示任何 PHP 错误信息…...

Python 面向对象(类,对象,方法,属性,魔术方法)

前言&#xff1a;在讲面向对象之前&#xff0c;我们先将面向过程和面向对象进行一个简单的分析比较&#xff0c;这样我们可以更好的理解与区分&#xff0c;然后我们在详细的讲解面向对象的优势。 面向过程&#xff08;Procedure-Oriented Programming&#xff0c;POP&#xff0…...

C语言之扫雷

C语言之扫雷 game.hgame.ctest.c 参考 https://blog.csdn.net/m0_62391199/article/details/124694375 game.h #pragma once #include <stdio.h> #include <time.h> #include <stdlib.h>#define ROW 9 #define COL 9#define ROWS ROW2 #define COLS COL2#de…...

半导体制造工艺讲解

目录 一、半导体制造工艺的概述 二、单晶硅片的制造 1.单晶硅的制造 2.晶棒的切割、研磨 3.晶棒的切片、倒角和打磨 4.晶圆的检测和清洗 三、晶圆制造 1.氧化与涂胶 2.光刻与显影 3.刻蚀与脱胶 4.掺杂与退火 5.薄膜沉积、金属化和晶圆减薄 6.MOSFET在晶圆表面的形…...

Ollama+DeepSeek R1+AnythingLLM训练自己的AI智能助手

1.下载Ollama安装 1.1.安装Ollama Ollama官网&#xff1a;Ollama 下载Ollama,点击“Download”按钮。 根据电脑操作系统&#xff0c;下载合适的版本即可。 下载完成后点击安装&#xff0c;完成后安装窗口会自动关闭&#xff0c;你的系统托盘图标会出现一个Ollama图标。 1.2.…...

基于java手机销售网站设计和实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

5-R循环

R 循环 ​ 有的时候&#xff0c;我们可能需要多次执行同一块代码。一般情况下&#xff0c;语句是按顺序执行的&#xff1a;函数中的第一个语句先执行&#xff0c;接着是第二个语句&#xff0c;依此类推。 编程语言提供了更为复杂执行路径的多种控制结构。 循环语句允许我们多…...

Qlabel 每五个一换行 并、号分割

学习点 Qlabel 每五个一换行 并、号分割 QString MainWindow::formatHobbies(const std::set<QString>& hobbies) {QString formattedHobbies;int count 0;for (const QString& hobby : hobbies) {if (count > 0 && count % 5 0)formattedHobbies…...

加速PyTorch模型训练:自动混合精度(AMP)

在深度学习领域&#xff0c;模型训练的速度和效率尤为重要。为了提升训练速度并减少显存占用&#xff08;较复杂的模型中&#xff09;&#xff0c;PyTorch自1.6版本起引入了自动混合精度&#xff08;Automatic Mixed Precision, AMP&#xff09;功能。 AMP简单介绍 是一种训练…...

【py】python安装教程(Windows系统,python3.13.2版本为例)

1.下载地址 官网&#xff1a;https://www.python.org/ 官网下载地址&#xff1a;https://www.python.org/downloads/ 2.64版本或者32位选择 【Stable Releases】&#xff1a;稳定发布版本&#xff0c;指的是已经测试过的版本&#xff0c;相对稳定。 【Pre-releases】&#…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)

考察一般的三次多项式&#xff0c;以r为参数&#xff1a; p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]&#xff1b; 此多项式的根为&#xff1a; 尽管看起来这个多项式是特殊的&#xff0c;其实一般的三次多项式都是可以通过线性变换化为这个形式…...

Python Einops库:深度学习中的张量操作革命

Einops&#xff08;爱因斯坦操作库&#xff09;就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库&#xff0c;用类似自然语言的表达式替代了晦涩的API调用&#xff0c;彻底改变了深度学习工程…...