day04 重新学python——数据容器

news2024/12/28 20:46:14

文章目录

    • 一、数据容器
      • 1.数据容器:list(列表)
      • 2.list(列表)的遍历
      • 3.数据容器:tuple(元组)
      • 4.数据容器:str(字符串)
      • 5.数据容器的切片
      • 6.数据容器:set(集合)
      • 7.数据容器:dict(字典、映射)
      • 8.数据容器的通用操作

一、数据容器

1.数据容器:list(列表)

容器:就是为了批量存储和批量使用多份数据,容器内的每一份数据称之为元素。

"""
# 字面量
[元素1,元素2,元素3……]
# 定义变量
变量名称 = [元素1,元素2,元素3,……]
# 定义空列表
li1 = []
li2 = list()
从以上可以得出:列表的标识为中括号[],里面的每一个元素之间使用逗号‘,’分割
注意:列表里面的数据元素可以为不同的数据类型,支持嵌套
"""
print("同一种元素类型定义的列表")
name = ["张三","李四","王五"]
print(name)
print("不同一种元素类型定义的列表")
name1 = ["张三",18,"王五"]
print(name1)
print("列表中的元素为嵌套的形式")
name2 = [[1,2,3],[4,5,6]]
print(name2)

在这里插入图片描述

"""
列表的下标索引
语法:列表[下标],从前向后的方向,从0开始递增
"""
list1 = ['张三', '李四', '王五']
for name in range(len(list1)):
    print(list1[name])

在这里插入图片描述

"""
嵌套列表的下标
"""
list1 = [[1,2,3],[4,5,6]]
for name in list1:
    for index in range(len(name)):
        print(name[index])

在这里插入图片描述

"""
查找某个元素的下标
语法:列表.index(元素)
"""
my_list = ["张三","李四","王五"]
print(my_list.index("李四"))

"""
列表的修改(重新赋值)功能
语法:列表[下标]=值  
直接对指定下标(正向、反向下标均可)的值进行重新赋值修改
"""
list1 = [1,2,3]
list1[1] = "修改了"
print(list1)
list2 = [4,5,6]
list2[2] = "修改了111"
print(list2)
"""
插入元素
语法:列表.insert(下标,元素) 即在指定的下标位置插入指定的元素,之后原来位置的元素以及后续的元素均后移
"""
list_insert = [1,2,3]
list_insert.insert(1,"插入测试")
print(list_insert)
"""
追加元素
语法:列表.append(元素),将指定元素,追加到列表的尾部
"""
list_append = [1,2,3]
list_append.append(4)
print(list_append)
"""
追加元素方式2
语法:列表.extend(其它数据容器),将其它数据容器的内容取出,一次追加到列表尾部
"""
list_extend = [1,2,3]
list8 = [7,8,9]
list_extend.extend(list8)
print(list_extend)
"""
列表的删除:
语法1 del 列表[下标]
语法2 列表.pop(下标)
删除某一个元素在列表中的第一个匹配项,语法 列表.remove(元素)
清空列表内容:语法:列表.clear()
"""
list_del = [1,2,3,4,5,6,7]
del list_del[0]
print(list_del)
list_del.pop(1)
print(list_del)
list_del.remove(7)
print(list_del)
list_del.clear()
print(list_del)
"""
统计某元素在列表内的数量(次数)
语法:列表.count(元素值)
统计列表有几个元素 语法:len(列表)
"""
list_count = [1,1,2,3,4,5,6,7]
print(list_count.count(1))
print(len(list_count))

在这里插入图片描述

2.list(列表)的遍历

"""
第一种方式:
while方式
index = 0
while index <len(列表)
    元素 = 列表[index]
    对元素进行处理
    index += 1
第二种方式
for循环
for 临时变量 in 数据容器
    对临时变量进行处理
"""
# 第一种:while遍历
list1 = [1,2,3,4]
index = 0
while index < len(list1):
     i = list1[index]
     index += 1
     print(f"while遍历结果为{i}")
# 第二种:for循环遍历
for j in list1:
    print(f"for遍历结果为{j}")

在这里插入图片描述

while循环可以自定循环条件,并自行控制
for循环不可用自定循环条件,只可以从容器中一个个取出所需要的数据,且for不能实现无限循环,因为列表的数据是有限的

3.数据容器:tuple(元组)

元组定义:定义元组可以使用小括号,里面的数据元素使用逗号隔开,元素可以使不同的数据类型,元组数据一旦定义,就不能修改。

"""
# 定义元组字面量
(元素,元素,……)
# 定义元组变量
变量名称 = (元素,元素,……)
# 定义空元组
变量名称 = ()
变量名称 = tuple()
元组的相关操作如下三个所示:
1.index()查找某个数据,如果数据存在,返回对应的下标,否则报错
2.count()统计某个数据在当前元组出现的次数
3.len(元组)统计元组内的元素个数
注意:元组因为不可修改的特性,所以操作方法比较少
"""
# 根据下标(索引)取出数据
t1 = (1,"测试",3)
print(t1[1])  # 结果,‘测试’
# 根据index(),查找特定元素的第一个匹配项
print(t1.index('测试'))  # 结果,1
# 统计某个数据在元组内出现的次数
print(t1.count('测试'))  # 结果,1
# 统计元组内的元素个数
print(len(t1))  # 结果,3

在这里插入图片描述

"""
嵌套使用
"""
t2 = (1,2,['a','b','c'])
# 此时可以修改元组里面列表的某一个元素值
t2[2][0]='修改'
print(t2)

在这里插入图片描述

4.数据容器:str(字符串)

字符串:和其他数据容器元组和列表一样,字符串也是可以通过下标进行访问。

  • 从前往后,下标从0开始
  • 从后往前,下标从-1开始

同元组一样,字符串是一个无法修改的数据容器

字符串常用操作汇总:

在这里插入图片描述

"""
字符串切片
查找特定字符串的下标索引值
语法:字符串.index(待查找的字符串)
"""
my_str = "I am lgl"
print(my_str.index("lgl"))  # 结果5,即第一个字母所在索引
"""
字符串的替换
语法:字符串.replace(字符串1,字符串2)
就是将字符串的全部字符串1替换为字符串2,并返回一个新的字符串,不会修改原来的字符串
"""
my_str1 = "I am lgl"
new_str = my_str1.replace('lgl','zyt')
print(new_str)  # I am zyt

"""
字符串分割:
语法:字符串.split(分割符)
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并入列表中,结果返回一个列表对象中
注意:字符串本身不发生改变,而是得到了一个新的字符串
"""
new_split = my_str1.split(" ")  # 以空格进行分割
print(new_split)  # ['I', 'am', 'lgl']
"""
去除字符串的前后空格
语法:字符串.strip()或字符串.strip(去掉前后指定的字符)
返回一个去掉空格后的字符串
"""
my_str11 = "   12I am lgl21"
print(my_str11.strip())  # 12I am lgl21
print("12I am lgl21".strip('12'))   # I am lgl
"""
统计字符串中某个字符串出现的次数
语法:字符串.count(字符串)
"""
print("lgl_dsajdgk_lgl".count("lgl"))  # 2
"""
统计字符串的长度
语法:len(字符串)
"""
print(len("hdaklak  ***00"))  # 14

在这里插入图片描述

5.数据容器的切片

序列:是指内容连续、有序、可使用下标索引的一类数据容器
列表、元组、字符串均可以视为序列
在这里插入图片描述
切片:即从一个序列中取出一个子序列
语法:序列[起始下标:结束下标:步长]
在这里插入图片描述

my_list = [1, 2, 3, 4, 5]
new_list = my_list[1:4]	# 下标1开始,下标4(不含)结束,步长1
print(new_list)		# 结果:[2, 3, 4]

my_list = [1, 2, 3, 4, 5]
new_list = my_list[::2]		# 从头开始,到最后结束,步长2
print(new_list)		# 结果:[1, 3, 5]

my_str = "12345"
new_str = my_str[:4:2]	 # 从头开始,到下标4(不含)结束,步长2
print(new_str)		# 结果:"13"

在这里插入图片描述

6.数据容器:set(集合)

集合自带去重功能,内容无序

"""
集合的定义:
集合字面量
{元素,元素,……}
定义集合变量
变量名称 = {元素,元素,……}
定义空集合
变量名称 = set()

集合可以去重,所以去重后无法保证与原来的序列顺序一致
"""
test = {'研究生','本科生','博士生','本科生'}
print(test)  # {'研究生', '本科生', '博士生'}
"""
集合常用操作:
修改:
添加新元素,集合.add(元素)。将指定元素添加到元素内,此时原来的集合也相对应的改变
移除元素:集合.remove("需要移除的元素"),此时原集合会被修改,移除了元素
取出元素:集合.pop() 从集合中随机取出一个元素,结果会得到一个元素结果,同时集合本身被修改,元素被移除
清空集合:集合.clear(),此时集合中所有被清空,返回一个空集合
取出两个集合的差集:语法:集合1.difference(集合2)  取出集合1和集合2之间的差集,集合1有,而集合2没有的,此时返回一个新的集合,集合1和集合2原本的都不变
消除两个集合的差集:语法:集合1.difference_update(集合2)  对比集合1和集合2,在集合1内删除和集合2相同的元素,结果集合1被修改,集合2不变
两个集合合并:集合1.union(集合2)  功能:将集合1和集合2组成新的集合,此时得到新集合,集合1和集合2不变
查看集合的元素数量:语法:len(集合)  统计集合中由多少个元素
集合遍历:只能使用for进行遍历,因为集合不支持下标索引,所以也就不支持while循环

"""
test.add("海归")
print(test)
test.remove("海归")
print(test)
test.pop()
print(test)
# test.clear()
# print(test)
test2 = {"本科生","海归"}
# print(test.difference(test2))
test.difference_update(test2)
print(test)
hebin1 = {1,2,3}
hebin2 = {4,5,6}
temp = hebin1.union(hebin2)
print(temp)  # {1, 2, 3, 4, 5, 6}
# for循环遍历
set1 = {1,2,3}
for i in set1:
    print(i)

在这里插入图片描述
在这里插入图片描述

7.数据容器:dict(字典、映射)

字典:键值对的形式,可以使用key取出对应的value
在这里插入图片描述
在这里插入图片描述
常用的操作
在这里插入图片描述

"""
定义字典字面量
{key : value, key : value……}
定义字典变量
dict_test = {key : value, key : value……}
定义空字典
第一种方式 dict_1 = {}
第二种方式 dict_2 = dict()
"""
# 字典常用操作
"""
新增元素
语法:字典[key] = value 结果字典被修改,新增了元素
"""
stu_dict = {
    "张三": 20,
    "李四": 80,
    "王五": 90
}
stu_dict["李华"] = 100
print(stu_dict)  # {'张三': 20, '李四': 80, '王五': 90, '李华': 100}
"""
更新元素
字典中key不可以重复,所以对已经存在的key进行赋值就是进行更新操作
"""
stu_dict["张三"] = 100
print(stu_dict)
"""
删除元素
语法:字典.pop(key) 结果获得指定的key对应的value,同时字典被修改,指定的key对应的value被删除
"""
value = stu_dict.pop("李华")
print(stu_dict)
print(value)
"""
清空元素
语法:字典.clear()
结果字典被修改,元素被清空
"""
stu_dict.clear()
print(stu_dict)
"""
获取所有的key
语法:字典.keys(),结果:得到字典中全部的key
"""
stu_dict = {
    "张三": 20,
    "李四": 80,
    "王五": 90
}
keys = stu_dict.keys()
print(keys)
"""
遍历字典
语法:for key in 字典.keys()
"""
for k in stu_dict.keys():
    print(f"学生:{k},分数:{stu_dict[k]}")

"""
计算字典中全部元素的数量
语法:len(字典)
"""
print(len(stu_dict))

在这里插入图片描述
各个数据容器的对比

8.数据容器的通用操作

遍历:5种数据容器都支持for循环遍历。列表、元组、字符串支持while循环,集合和字典不支持while,因为这两个无法索引到下标
通用统计功能:len(容器),表示统计容器的元素个数;max(容器),表示统计容器的最大元素;min(容器),表示容器的最小元素
通用类型转换:list(容器),将给定容器转换为列表;str(容器),将给定容器转换为字符串;tuple(容器),将给定容器转换为元组;set(容器),将给定容器转换为集合
通用排序功能:sorted(容器,[reverse=True]),将给定容器进行排序,排序后都会得到列表(list)对象,reverse=True表示降序。
在这里插入图片描述

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

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

相关文章

Vue2:简单使用Animate.css动画效果

简单的使用一下Animate的动画效果&#xff08;安装&#xff0c;使用&#xff0c;速度&#xff09; 官网&#xff1a;动画.css |CSS动画的跨浏览器库。 (animate.style)https://animate.style/ 1、通过npm安装&#xff1a; npm install animate.css --save 2、导入到组件 i…

第一百零六天学习记录:数据结构与算法基础:单链表(王卓教学视频)

线性表的链式表示和实现 结点在存储器中的位置是任意的&#xff0c;即逻辑上相邻的数据元素在物理上不一定相邻 线性表的链式表示又称为非顺序映像或链式映像。 用一组物理位置任意的存储单元来存放线性表的数据元素。 这组存储单元既可以是连续的&#xff0c;也可以是不连续的…

Thymeleaf th名称空间-表达式语法-访问域对象-获取请求参数-内置对象

基本语法&#xff1a;th名称空间 基本语法&#xff1a;表达式语法 修改标签文本值 代码示例&#xff1a; <p th:text"标签体新值">标签体原始值</p>th:text作用 不经过服务器解析&#xff0c;直接用浏览器打开HTML文件&#xff0c;看到的是『标签体原…

使用C语言连接MySQL

目录 一、引入库 1.1 下载库文件 1.2 在项目中引入库 二、使用库 2.1 连接数据库 2.2 SQL请求 2.3 获取查询结果 2.4 使用案例 一、引入库 1.1 下载库文件 要使用C语言连接MySQL&#xff0c;需使用MySQL官网提供的库 MySQL :: Download Connector/Chttps://dev.mysq…

家政服务小程序开发预约功能

家政服务的需求也越来越大&#xff0c;为了更加方便用户预约服务&#xff0c;很多家政服务平台开始开发微信小程序&#xff0c;为用户提供在线预约服务。那么&#xff0c;如何开发家政服务小程序的预约功能呢&#xff1f;下面我们将结合一些参考信息&#xff0c;为大家详细介绍…

vue-element-admin || 后台管理三级/多级菜单设置

如图&#xff0c;基于vue-element-admin前端框架实现三级菜单&#xff0c;其中页面只对应三级菜单&#xff0c;无二级菜单的页面。 文件组织&#xff0c;在views文件夹下如下组织文件结构&#xff0c;其中第三级的菜单就是具体的.vue文件 在一级菜单hxb_sys下&#xff0c;要…

PROFIBUS-DP主站转ETHERCAT网关连接canopen协议报文解析实例

大家好&#xff0c;今天要给大家介绍一款远创智控的神秘产品&#xff0c;它的名字叫YC-DPM-ECT&#xff0c;是一款兼具PROFIBUS-DP主站功能的通讯网关。想象一下&#xff0c;它既能和PROFIBUS总线打交道&#xff0c;又能与ETHERCAT网络愉快地交流&#xff0c;是不是感觉很神奇&…

【Arduino小车实践】PID应用之四驱小车

一、 PID公式 二、 PID应用的必要性 1. 四驱小车运动 左边两个驱动轮和右边两个驱动轮的速度相同直线右边轮子的速度大于左边轮子的速度左偏右边轮子的速度小于左边轮子的速度 右偏 2. 产生多种运动的原因 小车的4个电机&#xff0c;减速箱以及车轮在物理层面上存在误差&am…

Spark(21):SparkStreaming之DStream入门

目录 0. 相关文章链接 1. WordCount 案例实操 1.1. 需求 1.2. 添加依赖 1.3. 编写代码 1.4. 启动程序并通过netcat发送数据 2. WordCount 解析 0. 相关文章链接 Spark文章汇总 1. WordCount 案例实操 1.1. 需求 使用 netcat 工具向 9999 端口不断的发送数据&#xf…

Flutter系列文章-Flutter环境搭建和Dart基础

Flutter是Google推出的一个开源的、高性能的移动应用开发框架&#xff0c;可以用一套代码库开发Android和iOS应用。Dart则是Flutter所使用的编程语言。让我们来看看如何搭建Flutter开发环境&#xff0c;并了解Dart语言的基础知识。 一、Flutter环境搭建 1. 安装Flutter SDK …

Blender 3.6 LTS更新的5个新功能,一定要试试

Blender基金会已正式发布Blender 3.6 LTS&#xff08;长期支持&#xff09;。它是备受期待的该公司开源 3D 软件的长期支持版本&#xff0c;也是 Blender 3.x 系列的最终 LTS 版本。Blender 3.6有一个用于设置基于粒子的模拟的模拟节点和一个升级的 UV 封装系统&#xff0c;其中…

IDEA自动添加注释作者版本时间等信息

File | Settings | Editor | Live Templates 点击加号&#xff0c;选择第二项 设置一个名称 再次点击加号&#xff0c;选择第一项 填写名称&#xff08;设置完成后再代码中输入该名称即可插入该注释内容&#xff09;&#xff0c;描述&#xff0c;及内容 /*** author 名字…

深度图像Range Image

从点云创建深度图并显示 函数原型 RangeImage::createFromPointCloud (const PointCloudType& point_cloud, float angular_resolution, float max_angle_width, float max_angle_height, …

Leaflet Ant Path(水系流动效果)

一、源代码&#xff1a; 用leaflet库中的Leaflet.AntPath插件 将通量动画&#xff08;如蚂蚁行走&#xff09;放入折线中 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><…

【UE】运行游戏时就获取鼠标控制

问题描述 我们经常在点击运行游戏后运行再在视口界面点击一下才能让游戏获取鼠标控制。其实只需做一个设置就可以在游戏运行后自动获取鼠标控制。 解决步骤 点击编辑器偏好设置 如下图&#xff0c;点击“播放”&#xff0c;再勾选“游戏获取鼠标控制” 这样当你运行游戏后直…

12、k8s Namespaces 资源隔离

Kubernetes Namespaces _ Kubernetes(K8S)中文文档_Kubernetes中文社区 Kubernetes Namespaces 实现资源隔离和配额的隔离,比如下面的信息: 所有对象都在Namespace中? 大多数Kubernetes资源(例如pod、services、replication controllers或其他)都在某些Namespace中,…

【LeetCode热题100】打卡第36天:多数元素打家劫舍

文章目录 【LeetCode热题100】打卡第36天&#xff1a;多数元素&打家劫舍⛅前言 多数元素&#x1f512;题目&#x1f511;题解 打家劫舍&#x1f512;题目&#x1f511;题解 【LeetCode热题100】打卡第36天&#xff1a;多数元素&打家劫舍 ⛅前言 大家好&#xff0c;我是…

pytorch安装问题【超级简单版】

pytorch安装问题 当前遇到的问题&#xff1a; python3.9无法安装读取coco数据集的 pycocotools-windows,那么需要切换版本到3.6/7/8&#xff0c;但是切换到python 3.6之后&#xff0c;无法安装torchvision和pytorch【在python就叫torch】&#xff0c;显示没有这个版本 pip i…

MS1205N激光测距用高精度时间测量(TDC)电路

MS1205N 是一款高精度时间测量 (TDC) 电路&#xff0c;具有四通 道、多脉冲的采样能力、高速 SPI 通讯、多种测量模式&#xff0c;适合 于激光雷达和激光测距。 主要特点  单精度模式 60ps  双精度模式 30ps  非校准测量范围 3.5ns(0ns) 至 25μs  单…

案例分析:成功的APP开发背后的故事

如今&#xff0c;我们生活在一个信息化时代&#xff0c;在这个信息时代&#xff0c;不管是工作还是生活都离不开手机 APP。因为有了手机 APP&#xff0c;我们的生活变得更加便捷、智能。但随着移动 APP开发的火热&#xff0c;很多企业都想要制作一个自己的 APP。然而在众多的 A…