【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 

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

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

相关文章

三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测(Maltab)

三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测&#xff08;Maltab&#xff09; 完整代码私信回复三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测&#xff08;Maltab&#xff09; 一、引言 1、研究背景和意义 在现代数据科学领域&#xff0c;时间序列…

Jenkins+gitee 搭建自动化部署

Jenkinsgitee 搭建自动化部署 环境说明&#xff1a; 软件版本备注CentOS8.5.2111JDK1.8.0_211Maven3.8.8git2.27.0Jenkins2.319最好选稳定版本&#xff0c;不然安装插件有点麻烦 一、安装Jenkins程序 1、到官网下载相应的版本war或者直接使用yum安装 Jenkins官网下载 直接…

AI 编程开发插件codeium Windsurf(vscode、editor) 安装

1、vscode中安装&#xff1a; 2、vscode中使用 3、输入注册的账号密码&#xff0c;就可以使用。 4、或者直接下载editor 5、安装editor 下一步&#xff0c;下一步&#xff0c;直到安装成功&#xff0c;中间可以改下安装位置&#xff0c;如果C盘空间不够。 同样提示注册或者登录…

【Mac排错】ls: command not found 终端命令失效的解决办法

【TroubleShooting on Mac】ls: command not found 终端命令失效的解决办法 A Solution to Solve “Command not found” of Terminal on Mac 一直在使用心爱的MacBook Pro的Terminal&#xff0c;并且为她定制了不同的Profile。 这样&#xff0c;看起来她可以在不同季节&…

河北某石油管廊自动化监测

1. 项目简介 近年来&#xff0c;国家密集出台油气管道建设相关政策和规划引导中国油气管道加快建设&#xff0c;2017年&#xff0c;在《中长期油气管网规划》中对2025年和2030年油气管道发展目标均作出了相应的规划目标。另一方面&#xff0c;随着油气管道行业的发展&#xff…

问题:通过策略模式+工厂模式+模板方法模式实现ifelse优化

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 示例&#xff1a;商城系统有会员系统&#xff0c;不同会员有不同优惠程度&#xff0c;普通会员不优惠&#xff1b;黄金会员打8折&#xff1b;白金会员优惠50元&#xff0c;再打7折&#xff1b; 问题描…

Android ndk兼容 64bit so报错

1、报错logcat如下 2025-01-13 11:34:41.963 4687-4687 DEBUG pid-4687 A #01 pc 00000000000063b8 /system/lib64/liblog.so (__android_log_default_aborter16) (BuildId: 467c2038cdfa767245f9280e657fdb85) 2025…

centos安装Nexus Repository OSS(Maven私服)

1. 下载链接&#xff1a;https://help.sonatype.com/en/download.html 2. 注意页面下载页面中的要求&#xff1a;JDK17&#xff08;启动时提示最低JDK1.8最高JDK17&#xff0c;但是使用JDK1.8无法正常启动&#xff09; 3. mkdir /opt/nexus 将压缩包上传到该目录并解压。 tar …

b站——《【强化学习】一小时完全入门》学习笔记及代码(1-3 多臂老虎机)

问题陈述 我们有两个多臂老虎机&#xff08;Multi-Armed Bandit&#xff09;&#xff0c;分别称为左边的老虎机和右边的老虎机。每个老虎机的奖励服从不同的正态分布&#xff1a; 左边的老虎机&#xff1a;奖励服从均值为 500&#xff0c;标准差为 50 的正态分布&#xff0c;即…

Linux:安装 node 及 nvm node 版本管理工具(ubuntu )

目录 方法一&#xff1a;手动下载安装文件安装方法二&#xff1a;curl安装 方法一&#xff1a;手动下载安装文件安装 git clone 远程镜像 git clone https://gitee.com/mirrors/nvm安装 nvm bash install.sh刷新配置&#xff0c;使配置在终端生效 // 方法 1 source /root/.…

基于STM32的ADS1230驱动例程

自己在练手项目中用到了ADS1230&#xff0c;根据芯片手册自写的驱动代码&#xff0c;已测可用&#xff0c;希望对将要用到ADS1230芯片的人有所帮助。 芯片&#xff1a;STM32系列任意芯片、ADS1230 环境&#xff1a;使用STM32CubeMX配置引脚、KEIL 部分电路&#xff1a; 代码…

游戏引擎学习第98天

仓库:https://gitee.com/mrxiao_com/2d_game_2 开始进行一点回顾 今天的目标是继续实现正常贴图的操作&#xff0c;尽管目前我们还没有足够的光照信息来使其完全有用。昨日完成了正常贴图相关的基础工作&#xff0c;接下来将集中精力实现正常贴图的基本操作&#xff0c;并准备…

Windows 本地部署大模型 OpenWebUI+Ollama

安装Ollama Ollama官方网址&#xff1a;https://ollama.com 下载运行大模型 在Ollama官网中查看需要下载的大模型 https://ollama.com/library 复制图片中的链接 打开cmd&#xff0c;运行此命令&#xff08;此过程会时间会很久&#xff09; 下载Miniconda Miniconda作用是…

npm运行Vue项目报错 error:0308010c:digital envelope routines::unsupported

大家好&#xff0c;我是 程序员码递夫。 问题 VSCode 运行Vue项目&#xff0c;提示错误&#xff1a; building 2/2 modules 0 activeError: error:0308010c:digital envelope routines::unsupported 解决方法 原因是 npm 高版本(大于17)&#xff0c;对ssl的处理做了改进&…

安川伺服控制器MP系列优势特点及行业应用

在工业自动化领域&#xff0c;运动控制器的性能直接决定了设备的精度、效率和可靠性。作为全球领先的运动控制品牌&#xff0c;安川电机伺服控制器凭借其卓越的技术优势和广泛的应用场景&#xff0c;正在为智能制造注入强劲动力&#xff01; MP3100&#xff1a;主板型运动控制…

Python----PyQt开发(PyQt高级:图像显示,定时器,进度条)

一、图像显示 1.1、增加图标 1.直接创建setWindowIcon(QIcon(灯泡.jpg)) import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton from PyQt5.QtGui import QIconclass MainWindow(QMainWindow):def __init__(self):super(MainWindow, self).__init_…

工业路由器物联网应用,智慧环保环境数据监测

在智慧环保环境数据监测中工业路由器能连接各类分散的传感器&#xff0c;实现多源环境数据集中采集&#xff0c;并通过多种通信网络稳定传输至数据中心或云平台。 工作人员借助工业路由器可远程监控设备状态与环境数据&#xff0c;还能远程配置传感器参数。远程控制设置数据阈…

【DeepSeek】在本地计算机上部署DeepSeek-R1大模型实战(完整版)

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能&#xff08;AI&#xff09;通过算法模拟人类智能&#xff0c;利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络&#xff08;如ChatGPT&…

JAVA并发编程3--多线程程序

​ 1.创建线程的方法&#xff1a; 案例&#xff1a;计算1-1000的整数和 实现Runnable接口 步骤&#xff1a; 1.创建一个实现了Runnable接口的类 2.实现类去实现Runnable中的抽象方法&#xff1a;run() 3.创建实现类的对象 4.将此对象作为参数传递到Thread类的构造器中&#…

django中间件,中间件给下面传值

1、新建middleware.py文件 # myapp/middleware.py import time from django.http import HttpRequest import json from django.http import JsonResponse import urllib.parse class RequestTimeMiddleware:def __init__(self, get_response):self.get_response get_respons…