Python学习打卡:day08

day8

笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了

目录

  • day8
    • 58、数据容器(序列)的切片
      • 序列的常用操作——切片
    • 59、序列的切片课后练习
    • 60、集合的定义和操作
      • 集合的定义
      • 集合的操作
        • 添加新元素
        • 移除元素
        • 从集合中随机取出元素
        • 清空集合
        • 取出2个集合的差集
        • 消除2个集合的差集
        • 2个集合合并
        • 查看集合的元素数量
        • 集合的常用操作——for循环遍历
        • 集合的常用功能总结
        • 集合的特点
    • 61、集合的课后练习
    • 62、字典的定义
      • 字典数据的获取
      • 字典的嵌套
      • 嵌套字典的内容获取
      • 字典的注意事项
    • 63、字典的常用操作
      • 新增元素
      • 更新元素
      • 删除元素
      • 清空字典
      • 获取全部的key
      • 遍历字典
      • 计算字典内的全部元素(键值对)数量
      • 字典的常用操作总结
      • 字典的特点

58、数据容器(序列)的切片

序列是指:内容连续、有序,可使用下标索引的一类数据容器。列表、元组、字符串,均可以可以视为序列。
在这里插入图片描述在这里插入图片描述

序列的常用操作——切片

序列支持切片,即:列表、元组、字符串,均支持进行切片操作

切片:从一个序列中,取出一个子序列

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

表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:

  • 起始下标表示从何处开始,可以留空,留空视作从头开始
  • 结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾
  • 步长表示,依次取元素的间隔
  • 步长 1 表示,一个个取元素;
  • 步长 2 表示,每次跳过 1 个元素取;
  • 步长 N 表示,每次跳过 N-1 个元素取;
  • 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

注意,此操作不会影响序列本身,而是会得到一个新的序列(列表、元组、字符串)

示例:

"""
演示对序列进行切片操作
"""

# 对 list 进行切片,从 1 开始, 4 结束,步长为 1
my_list = [0, 1, 2, 3, 4, 5, 6]
result1 = my_list[1:4]      # 步长默认是1,所以可以省略不写
print(f"结果1:{result1}")

# 对 tuple 进行切片,从头开始,到最后结束,步长为 1
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result2 = my_tuple[:]     # 起始和结束不写表示从头到尾,步长为 1 可以省略
print(f"结果2:{result2}")

# 对 str 进行切片,从头开始,到最后结束,步长为 2
my_str = "01234567"
result3 = my_str[::2]
print(f"结果3:{result3}")

# 对 str 进行切片,从头开始,到最后结束,步长为 2
my_str = "01234567"
result4 = my_str[::-1]      # 等同于将序列反转了
print(f"结果4:{result4}")

# 对列表进行 my_list = [0, 1, 2, 3, 4, 5, 6] 切片,从 3 开始,到 1 结束,步长 -1
my_list = [0, 1, 2, 3, 4, 5, 6]
result5 = my_list[3:1:-1]
print(f"结果5:{result5}")

# 对元组进行切片,从头开始,到尾结束,步长 -2
my_tuple = (0, 1, 2, 3, 4, 5, 6)
result6 = my_tuple[::-2]
print(f"结果6:{result6}")

59、序列的切片课后练习

# 方法1
mystr1 = "万过薪月,员序程马黑来,nohtyP学"
mystr2 = mystr1[::-1]
print(mystr2)
mystr3 = mystr2.split(",")
print(mystr3)
mystr4 = mystr3[1]
print(mystr4)
result = mystr4[1::1]
print(result)

# 方法2:
mystr1 = "万过薪月,员序程马黑来,nohtyP学"
result2 = mystr1.split(",")[1].replace("来","")[::-1]
print(result2)

60、集合的定义和操作

集合的定义

通过特性来分析:

  • 列表可修改支持重复元素且有序
  • 元组、字符串不可修改、支持重复元素且有序

局限就在于:它们都支持重复元素

如果场景需要对内容做去重处理,列表、元组、字符串就不方便了。

集合,最主要的特点就是:不支持元素的重复(自带去重功能)、并且内容无序

基本语法格式:
在这里插入图片描述

示例:

# 定义集合
my_set = {"传智教育", "黑马程序员", "itheima","传智教育", "黑马程序员", "itheima","传智教育", "黑马程序员", "itheima"}
my_set_empty = set()    # 定义空集合
print(f"my_set的内容是:{my_set},类型是:{type(my_set)}")
print(f"my_set_empty的内容是:{my_set_empty},类型是:{type(my_set_empty)}")

# 结果
my_set的内容是:{'传智教育', 'itheima', '黑马程序员'},类型是:<class 'set'>
my_set_empty的内容是:set(),类型是:<class 'set'>

和列表、元组、字符串等定义基本相同:

  • 列表使用:[]
  • 元组使用:()
  • 字符串使用:“”
  • 集合使用:{}

集合的操作

因为集合是无序的,所以集合不支持:下标索引访问

添加新元素

语法:集合.add(元素)。将指定元素,添加到集合内

结果:集合本身被修改,添加了新元素

示例:

# 添加新元素
my_set = {"传智教育", "黑马程序员", "itheima"}
my_set.add("Python")
my_set.add("传智教育")
print(f"my_set添加元素后结果是:{my_set}")

# 结果
my_set添加元素后结果是:{'传智教育', 'itheima', 'Python', '黑马程序员'}

tips:注意到添加已有元素,并不会重复出现在集合里

移除元素

语法:集合.remove(元素),将指定元素,从集合内移除

结果:集合本身被修改,移除了元素

示例:

# 移除元素
my_set = {"传智教育", "黑马程序员", "itheima"}
my_set.remove("黑马程序员")
print(f"my_set移除元素后结果是:{my_set}")

# 结果
my_set移除元素后结果是:{'传智教育', 'itheima'}
从集合中随机取出元素

语法:集合.pop(),功能,从集合中随机取出一个元素

结果:会得到一个元素的结果。同时集合本身被修改,元素被移除

示例:

# 随机取一个元素
my_set = {"传智教育", "黑马程序员", "itheima"}
element = my_set.pop()
print(f"集合被取出元素是:{element},取出元素后:{my_set}")

# 结果
集合被取出元素是:传智教育,取出元素后:{'itheima', '黑马程序员'}
清空集合

语法:集合.clear(),功能,清空集合

结果:集合本身被清空

示例:

# 清空集合
my_set = {"传智教育", "黑马程序员", "itheima"}
my_set.clear()
print(f"集合被清空啦,结果是:{my_set}")

# 结果
集合被清空啦,结果是:set()
取出2个集合的差集

语法:集合1.difference(集合2),功能:取出集合1和集合2的差集(集合1有而集合2没有的)

结果:得到一个新集合,集合1和集合2不变

# 取 2 个集合的差集
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.difference(set2)
print(f"取出差集后的结果是:{set3}")
print(f"取出差集后,原有的set1的内容是:{set1}")
print(f"取出差集后,原有的set3的内容是:{set2}")

# 结果
取出差集后的结果是:{2, 3}
取出差集后,原有的set1的内容是:{1, 2, 3}
取出差集后,原有的set3的内容是:{1, 5, 6}
消除2个集合的差集

语法:集合1.difference_update(集合2)

功能:对比集合1和集合2,在集合1内,删除和集合2相同的元素。

结果:集合1被修改,集合2不变

# 消除 2 个集合的差集
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set1.difference_update(set2)
print(f"消除差集后,集合1结果:{set1}")
print(f"消除差集后,集合2结果:{set2}")

# 结果
消除差集后,集合1结果:{2, 3}
消除差集后,集合2结果:{1, 5, 6}
2个集合合并

语法:集合1.union(集合2)

功能:将集合1和集合2组合成新集合

结果:得到新集合,集合1和集合2不变

# 2 个集合合并为 1 个
set1 = {1, 2, 3}
set2 = {1, 5, 6}
set3 = set1.union(set2)
print(f"2集合合并结果:{set3}")
print(f"合并后集合1:{set1}")
print(f"合并后集合2:{set2}")

# 结果
2集合合并结果:{1, 2, 3, 5, 6}
合并后集合1{1, 2, 3}
合并后集合2{1, 5, 6}
查看集合的元素数量

语法:len(集合)

功能:统计集合内有多少元素

结果:得到一个整数结果

# 统计集合元素数量 len()
set1 = {1, 2, 3, 4, 5, 1, 2, 3, 4, 5}
num = len(set1)
print(f"集合内的元素数量有:{num}个")

# 结果
集合内的元素数量有:5
集合的常用操作——for循环遍历

tips集合不支持下标索引,所以也就不支持使用 while 循环

# 集合的遍历
# 集合不支持下标索引,不能用 while 循环
# 可以用 for 循环
set1 = {1, 2, 3, 4, 5}
for element in set1:
    print(f"集合的元素有:{element}")
集合的常用功能总结
编号操作说明
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个集合内容不变
8len(集合)得到一个整数,记录了集合的元素数量
集合的特点
  1. 可以容纳多个数据;
  2. 可以容纳不同类型的数据(混装);
  3. 数据是无序存储的(不支持下标索引)
  4. 不允许重复数据存在
  5. 可以修改(增加或删除元素等);
  6. 支持for循环

61、集合的课后练习

在这里插入图片描述

示例:

my_list = ['黑马程序员', '传智播客', '黑马程序员', '传智播客', 'itheima', 'itcast', 'itheima', 'itcast', 'best']
my_set = set()

for element in my_list:
    my_set.add(element)
print(f"存入集合后,集合结果为:{my_set}")

62、字典的定义

字典可以实现用 key 取出 Value 的操作

字典数据的获取

字典同集合一样,不可以使用下标索引

但是字典可以通过 Key值 来取得对应的 Value

# 定义字典
my_dict1 = {"王力宏" : 99, "周杰伦" : 88, "林俊杰" : 77}
# 定义空的字典
my_dict2 = {}   # 集合不能使用 my_set = {}, 只能使用 my_set = set()
my_dict3 = dict()
print(f"字典1的内容是:{my_dict1},类型:{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2},类型:{type(my_dict2)}")
print(f"字典3的内容是:{my_dict3},类型:{type(my_dict3)}")

# 定义重复 key 的字典
my_dict1 = {"王力宏" : 99, "王力宏" : 88, "林俊杰" : 77}
print(f"重复 key 的字典的内容是:{my_dict1}")

# 从字典中基于 Key 获取 Value
my_dict1 = {"王力宏" : 99, "周杰伦" : 88, "林俊杰" : 77}
score = my_dict1["王力宏"]
print(f"王力宏的考试分数是:{score}")
score = my_dict1["周杰伦"]
print(f"周杰伦的考试分数是:{score}")

# 结果
字典1的内容是:{'王力宏': 99, '周杰伦': 88, '林俊杰': 77},类型:<class 'dict'>
字典2的内容是:{},类型:<class 'dict'>
字典3的内容是:{},类型:<class 'dict'>
重复 key 的字典的内容是:{'王力宏': 88, '林俊杰': 77}
王力宏的考试分数是:99
周杰伦的考试分数是:88

tips:定义重复的 key,后出现的 key 所对应的 value 会覆盖掉前者的 value

字典的嵌套

在这里插入图片描述

示例:

# 定义嵌套字典
stu_score_dict = {
    "wanglihonh" : {
        "yuwen" : 77,
        "shuxue" : 66,
        "yingyu" : 33
    },
    "zhoujielun" : {
        "yuwen" : 88,
        "shuxue" : 86,
        "yingyu" : 55
    },
    "linjunjie" : {
        "yuwen" : 99,
        "shuxue" : 96,
        "yingyu" : 66
    }
}
print(f"学生的考试信息是:{stu_score_dict}")

# 结果
学生的考试信息是:{'wanglihonh': {'yuwen': 77, 'shuxue': 66, 'yingyu': 33}, 'zhoujielun': {'yuwen': 88, 'shuxue': 86, 'yingyu': 55}, 'linjunjie': {'yuwen': 99, 'shuxue': 96, 'yingyu': 66}}

嵌套字典的内容获取

# 从嵌套字典中获取信息
# 看一下周杰伦的语文信息
score = stu_score_dict["zhoujielun"]["yuwen"]
print(f"zhoujielun的yuwen考试分数是:{score}")
score = stu_score_dict["linjunjie"]["yingyu"]
print(f"linjunjie的yingyu考试分数是:{score}")

字典的注意事项

  1. 键值对的Key和Value可以是任意类型(Key不可为字典);
  2. 字典内Key不允许重复,重复添加等同于覆盖原有数据
  3. 字典不可用下标索引,而是通过Key检索Value

63、字典的常用操作

新增元素

语法:字典[Key] = Value,结果:字典被修改,新增了元素

my_dict = {"王力宏" : 99, "周杰伦" : 88, "林俊杰" : 77}
# 新增元素
my_dict["张信哲"] = 66
print(f"字典经过新增元素后,结果:{my_dict}")

# 结果
字典经过新增元素后,结果:{'王力宏': 99, '周杰伦': 88, '林俊杰': 77, '张信哲': 66}

更新元素

语法:字典[Key] = Value,结果:字典被修改,元素被更新

tips字典Key不可以重复,所以对已存在的Key执行上述操作,就是更新Value值

# 更新元素
my_dict["周杰伦"] = 33
print(f"字典经过更新元素后,结果:{my_dict}")

# 结果
字典经过更新元素后,结果:{'王力宏': 99, '周杰伦': 33, '林俊杰': 77, '张信哲': 66}

删除元素

语法:字典.pop(Key),结果:获得指定Key的Value,同时字典被修改,指定Key的数据被删除

# 删除元素
score = my_dict.pop("周杰伦")
print(f"字典经过删除元素后,结果:{my_dict},周杰伦的考试分数为:{score}")

# 结果
字典经过删除元素后,结果:{'王力宏': 99, '林俊杰': 77, '张信哲': 66},周杰伦的考试分数为:33

清空字典

语法:字典.clear(),结果:字典被修改,元素被清空

# 清空元素
my_dict.clear()
print(f"字典被清空了,内容是:{my_dict}")

# 结果
字典被清空了,内容是:{}

获取全部的key

语法:字典.keys(),结果:得到字典中的全部Key

# 获取全部的 key
my_dict = {"王力宏" : 99, "周杰伦" : 88, "林俊杰" : 77}
keys = my_dict.keys()
print(f"字典的全部keys是:{keys}")

# 结果
字典的全部keys是:dict_keys(['王力宏', '周杰伦', '林俊杰'])

遍历字典

语法:for key in 字典.keys()

tips:字典不支持下标索引,所以同样不可以用 while 循环遍历

# 遍历字典
# 方式1:通过获取到全部的 key 来完成遍历
for key in keys:
    print(f"字典的key是:{key}")
    print(f"字典的value是:{my_dict[key]}")

# 方式2:直接对字典进行 for 循环,每一次循环都是直接得到 key
for key in my_dict:
    print(f"字典的key是:{key}")
    print(f"字典的value是:{my_dict[key]}")
    
# 结果
字典的key是:王力宏
字典的value是:99
字典的key是:周杰伦
字典的value是:88
字典的key是:林俊杰
字典的value是:77
字典的key是:王力宏
字典的value是:99
字典的key是:周杰伦
字典的value是:88
字典的key是:林俊杰
字典的value是:77

计算字典内的全部元素(键值对)数量

语法:len(字典)

结果:得到一个整数,表示字典内元素(键值对)的数量

# 统计字典内的元素的数量
num = len(my_dict)
print(f"字典中的元素数量有:{num}个")

# 结果
字典中的元素数量有:3

字典的常用操作总结

编号操作说明
1字典[Key]获取指定Key对应的Value值
2字典[Key] = Value添加或更新键值对
3字典.pop(Key)取出Key对应的Value并在字典内删除此Key的键值对
4字典.clear()清空字典
5字典.keys()获取字典的全部Key,可用于for循环遍历字典
6len(字典)计算字典内的元素数量

字典的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据
  • 每一份数据是 KeyValue 键值对
  • 可以通过 Key 获取到 Value,Key不可重复(重复会覆盖)
  • 不支持下标索引
  • 可以修改(增加或删除更新元素等)
  • 支持for循环,不支持while循环

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

⭐ ▶《强化学习的数学原理》(2024春)_西湖大学赵世钰 Ch3 贝尔曼最优公式 【压缩映射定理】

PPT 截取必要信息。 课程网站做习题。总体 MOOC 过一遍 1、视频 学堂在线 习题 2、过 电子书&#xff0c;补充 【下载&#xff1a;本章 PDF 电子书 GitHub 界面链接】 [又看了一遍视频] 3、总体 MOOC 过一遍 习题 学堂在线 课程页面链接 中国大学MOOC 课程页面链接 B 站 视频链…

软考系统规划与管理师伴读脑图第9章

周末发系统规划与管理师的试听视频&#xff0c;占用了发送次数&#xff0c;所以上周的脑图推迟了今天发出。 不知不觉已经发到了第9章&#xff0c;感叹这就是坚持积累下来的力量&#xff0c;其实考试也是一样的道理。

Nginx 高级应用

目录 一.使用alias实现虚拟目录 二. 通过stub_status模块监控nginx的工作状态 三. 使用limit_rate限制客户端传输数据的速度 四. nginx虚拟主机配置 1.基于端口的虚拟主机 2. 基于IP的虚拟主机 3. 基于域名的虚拟主机 nginx配置文件&#xff1a; /…

中电金信:银行业数据中心何去何从

20多年前&#xff0c;计算机走进国内大众视野&#xff0c;计算机行业迎来在国内的高速发展时代。银行业是最早使用计算机的行业之一&#xff0c;也是计算机技术应用最广泛、最深入的行业之一。近年来&#xff0c;随着银行竞争加剧&#xff0c;科技如何引领业务、金融科技如何发…

面向对象和面向过程

Python完全采用了面向对象的思想&#xff0c;是真正面向对象的编程语言&#xff0c;完全支持面向对象的基本功能&#xff0c;例如&#xff1a;继承、多态、封装等。 Python支持面向过程、面向对象、函数式编程等多种编程方式。而Java编程语言支持面向对象的编程方式&#xff0…

元数据:数据的罗塞塔石碑

在大数据时代&#xff0c;我们每天都在生成和处理海量数据。但数据本身&#xff0c;如果没有适当的上下文和描述&#xff0c;就像是一堆没有翻译的古老文字。这就是元数据发挥作用的地方——它是大数据世界的罗塞塔石碑&#xff0c;为我们提供了理解和利用数据的关键。 文章目录…

从中概回购潮,看互联网的未来

王兴的饭否语录里有这样一句话&#xff1a;“对未来越有信心&#xff0c;对现在越有耐心。” 而如今的美团&#xff0c;已经不再掩饰对未来的坚定信心。6月11日&#xff0c;美团在港交所公告&#xff0c;计划回购不超过20亿美元的B类普通股股份。 而自从港股一季度财报季结束…

GStreamer——教程——基础教程3:Dynamic pipelines

基础教程3&#xff1a;Dynamic pipelines( 动态管道 ) 目标 本教程显示了使用GStreamer所需的其他基本概念&#xff0c;它允许“动态”构建pipeline(管道)&#xff0c;信息变得可用&#xff0c;而不是在应用程序开始时定义一条单一的管道。 完成本教程后&#xff0c;您将具备…

Pyshark——安装、解析pcap文件

1、简介 PyShark是一个用于网络数据包捕获和分析的Python库&#xff0c;基于著名的网络协议分析工具Wireshark和其背后的libpcap/tshark库。它提供了一种便捷的方式来处理网络流量&#xff0c;适用于需要进行网络监控、调试和研究的场景。以下是PyShark的一些关键特性和使用方…

26 岁的“天才少年”,带队面壁打通高效大模型之路

每一轮技术浪潮出现时&#xff0c;冲在最前面的都是朝气蓬勃的年轻人。 当大模型代表的人工智能浪潮席卷全球&#xff0c;作为移动互联网“原住民”的年轻开发者&#xff0c;可以说是最活跃的群体。他们的脸庞还有些稚嫩&#xff0c;但在技术和方向上有着自己的想法&#xff0…

志愿服务管理系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;广场论坛管理&#xff0c;志愿活动管理&#xff0c;活动报名管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;志愿活动&a…

dp练习2

如何分析这个题目呢&#xff0c;要想着当前的最优解只和前面的最优解有关 class Solution { public:int numSquares(int n) {vector<int> f(n 1);for (int i 1; i < n; i) {int minn INT_MAX;for (int j 1; j * j < i; j) {minn min(minn, f[i - j * j]);}f[…

【Linux】进程_7

文章目录 五、进程8. 进程地址空间9. 进程终止10. 进程等待 未完待续 五、进程 8. 进程地址空间 我们上节知道了进程地址空间是根据页表来使虚拟地址转换成内存中的物理地址&#xff0c;那这种 地址空间 页表 的机制有什么好处呢&#xff1f;①这种机制可以将物理内存从无序…

探索 Perplexity:产品经理的新式 AI 工具

这是一篇国外博客的翻译文章&#xff0c;文中重点介绍了产品经理如何使用 AI 工具 Perplexity 来解决日常工作中的实际问题。通过深入调查和数百次电话访谈&#xff0c;收集了产品经理使用Perplexity 的具体方法&#xff0c;并列举了一些非常实用的例子。 这些方法包括理解和制…

【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【10】【仓库管理】【分布式基础篇总结】 采购简要流程采购单采购人员的接口分布式基础篇总结参考 采购简要流程 采购单 可以搞个枚举&#xff1a; public class WareConstant {public enu…

【排序算法】希尔排序详解(C语言)

文章目录 前言希尔排序的原理原理思路 代码实现希尔排序的相关问题效率算法稳定性 前言 为什么会有希尔排序&#xff0c;要从插入排序说起&#xff0c;希尔排序一开始设计出来是为了改进插入排序&#xff0c;因为插入排序在处理大量数据时效率不高&#xff0c;特别是对于近乎有…

【数据库编程-SQLite3(三)】Ubuntu下sqlite3的使用

学习分享 1、安装sqlite3命令2、sqlite3点命令3、在Linux命令行下&#xff0c;启动sqlite33.1、编写sql脚本3.2、脚本编写--DDL3.3、进入xxx.db数据库&#xff0c;读取脚本。3.4、再次查看数据库中的表。证明表创建成功。3.5、查看数据表中用户内容3.6、查看表结构3.7、在数据库…

JAVAEE值之网络原理(1)_用户数据报协议(UDP)、概念、特点、结构、代码实例

前言 在前两节中我们介绍了UDP数据报套接字编程&#xff0c;但是并没有对UDP进行详细介绍&#xff0c;本节中我们将会详细介绍传输层中的UDP协议。 一、什么是UDP&#xff1f; UDP工作在传输层&#xff0c;用于程序之间传输数据的。数据一般包含&#xff1a;文件类型&#xff0…

【图像分割】DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation

DSNet: A Novel Way to Use Atrous Convolutions in Semantic Segmentation 论文链接&#xff1a;http://arxiv.org/abs/2406.03702 代码链接&#xff1a;https://github.com/takaniwa/DSNet 一、摘要 重新审视了现代卷积神经网络&#xff08;CNNs&#xff09;中的atrous卷积…

WPF 深入理解一、基础知识介绍

基础知识 本系列文章是对个人 B站 up 微软系列技术教程 记录 视频地址 https://www.bilibili.com/video/BV1HC4y1b76v/?spm_id_from333.999.0.0&vd_source0748f94a553c71a2b0125078697617e3 winform 与 wpf 异同 1.winform 项目结构 编辑主要是在 Form1.cs(页面)&#…