测试萌新三天速通python基础(二)列表,字符串,元组,字典,遍历,容器,集合,函数

python基础

    • 字符串
    • 下标(索引)
    • 切片
    • 字符串的替换 replace()
    • 字符串拆分 split()
    • 字符串的连接 join
    • 列表 list
    • 列表的增删改查
    • 列表的反转 reverse()
    • 排序
    • 列表嵌套
    • 元组 tuple
  • 排序 升序
  • 降序
    • 交换变量
    • 字典 dict
    • 查询
    • 遍历
    • 容器
    • 集合
    • 函数
    • 参数
    • 函数的嵌套调⽤
    • 函数的返回值
    • 模块导⼊的⽅法
    • ____name___ 变量
    • 可变类型与不可变类型
    • 局部变量和全局变量
    • 函数有多个返回值
    • 传参方式
    • 多值参数(可变参数/不定长参数)
    • 匿名函数
    • 案例

字符串

数据序列 , 容器 字符串 str, 列表 list,元组 tuple, 字典 dict
了解 集合 set
使用引号(单引号, 双引号, 三引号)引起来的内容,就是字符串

数据序列 , 容器 字符串 str, 列表 list,元组 tuple, 字典 dict
了解 集合 set
使用引号(单引号, 双引号, 三引号)引起来的内容,就是字符串

1. 使用单引号
str1 = 'hello'
2. 使用双引号定义
str2 = "hello"
3. 使用 三引号 定义
str3 = """hello"""
str4 = '''hello'''
print(type(str1), type(str2), type(str3), type(str4))
  1. 定义字符串 I’m 小明, 字符串本身包含引号

4.1 如果字符串本身包含单引号,定义的时候不能使用 单引号,

4.2 如果字符串本身包含双引号,定义的时候不能使用 双引号,

str5 = “I’m 小明”
print(str5) # I’m 小明

  1. 转义字符 \n \t ’ "
str6 = 'I\'m 小明'
print(str6) # I'm 小明
6. I\'m 小明 \\ --> \
str7 = 'I\\\'m 小明'
print(str7) # I\'m 小明

7. 原生字符串 在字符串的前边 加上 r"", 字符串中的 \ 就不会进行转义

str8 = r'I\'m 小明'
print(str8) # I\'m 小明

str7 = r'I\\\'m 小明'
print(str7) # I\\\'m 小明

下标(索引)

1, 下标(索引), 是数据在容器(字符串, 列表, 元组)中的位置, 编号
2, 一般来说,使用的是正数下标, 从 0 开始
3, 作用: 可以通过下标来获取具体位置的数据. 使用的语法为容器[下标]
4, Python 中是支持负数下标, -1 表示最后一个位置的数据

在这里插入图片描述

str1 = ‘abcdefg’

需求: 打印输出字符串中的 a 字符

print(str1[0])
print(str1[-7])

需求: 打印输出字符串中 最后一个字符(-1)

print(str1[-1])

需求: 打印输出 下标为 3 的位置的字符

print(str1[3])

切片

1, 使用切片操作, 可以一次性获取容器中的多个数据(多个数据之间存在一定的规律,数据的下标是 等差数列(相邻的两个数字之间的差值是一样的))
2, 语法 容器[start🔚step]
2.1 start 表示开始位置的下标
2.2 end 表示结束位置的下标,但是 end 所对应的下标位置的数据是不能取到的
2.3 step 步长,表示的意思就是相邻两个坐标的差值
start, start+step, start+step*2, …,end(取不到)

my_str = 'abcdefg'
# 需求1 : 打印字符串中 abc 字符 start 0, end 3, step 1
print(my_str[0:3:1])  # abc
# 1.1 如果步长是 1, 可以省略不写
print(my_str[0:3])  # abc
# 1.2 如果 start 开始位置的下标为 0, 可以不写,但是冒号不能少
print(my_str[:3])  # abc
# 需求 2: 打印字符串中的 efg , start 4, end 7, step 1
print(my_str[4: 7])  # efg
# 2.1 如果取到最后一个字符, end  可以不写,但是冒号不能少
print(my_str[4:])  # efg
# 需求 3: 打印字符串中的 aceg , start 0, end 7(最后), 步长 2
print(my_str[::2])  # aceg

字符串查找方法 find()

字符串.find(sub_str) # 在字符串中 查找是否存在 sub_str 这样的字符串
返回值(这行代码执行的结果):
1, 如果存在sub_str, 返回 第一次出现 sub_str 位置的下标
2, 如果不存在sub_str, 返回 -1

# 1. 现有字符串数据: '黑马程序员'
# 2. 请设计程序, 实现判断"黑马"和"白马"是否存在于数据中
# 3. 要求如果数据存在, 则输出数据所在位置
my_str = '黑马程序员'
# sub_str = '黑马'
sub_str = '白马'
result = my_str.find(sub_str)
if result == -1:
    print(f'{sub_str}不存在')
else:
    print(f'{sub_str}存在, 下标位置为:', result)

字符串的替换 replace()

字符串.replace(old, new, count) # 将字符串中的 old 字符串 替换为 new 字符串

  • old 原字符串,被替换的字符串
  • new 新字符串,要替换为的字符串
  • count 一般不写,表示全部替换, 可以指定替换的次数
  • 返回: 会返回一个替换后的完整的字符串
  • 注意: 原字符串不会改变的
my_str = 'good good study'
# 需求, 将 good 变为 GOOD
my_str1 = my_str.replace('good', 'GOOD')
print('my_str :', my_str)
print('my_str1:', my_str1)
# 将第一个 good 替换为 Good
my_str2 = my_str.replace('good', 'Good', 1)
print('my_str2:', my_str2)
# 将第二个 good  替换为 Good
# 先整体替换为 Good, 再将替换后的 第一个Good 替换为 good
my_str3 = my_str.replace('good', 'Good').replace('Good', 'good', 1)
print('my_str3:', my_str3)

字符串拆分 split()

字符串.split(sep) # 将字符串按照指定的字符串 sep 进行分隔

  • sep , 按照 sep 分隔, 可以不写, 默认按照空白字符(空格 \t \n)分隔
  • 返回: 列表,列表中的每个数据就是分隔后的字符串
str1 = 'hello Python\tand itcast and\nitheima'
# 1. 默认 按照空白字符分隔
list1 = str1.split()
print(list1)  # ['hello', 'Python', 'and', 'itcast', 'and', 'itheima']
# 2. 按照 空格分隔
list2 = str1.split(' ')
print(list2)  # ['hello', 'Python\tand', 'itcast', 'and\nitheima']
# 3. 按照 and  分隔
list3 = str1.split('and')
print(list3)  # ['hello Python\t', ' itcast ', '\nitheima']

字符串的连接 join

字符串.join(容器) # 容器一般是列表 , 将字符串插入到列表相邻的两个数据之间,组成新的字符串
注意点: 列表中的数据 必须都是字符串才可以

list1 = ['hello', 'Python', 'and', 'itcast', 'and', 'itheima']
# 将 列表中数据使用 空格 组成新的字符串
str1 = ' '.join(list1)
print(str1)  # hello Python and itcast and itheima
# 使用 逗号 连接
str2 = ','.join(list1)
print(str2)  # hello,Python,and,itcast,and,itheima
# 使用 _*_ 连接
str3 = '_*_'.join(list1)
print(str3)  # hello_*_Python_*_and_*_itcast_*_and_*_itheima

列表 list

1, 列表,list, 使用 []
2, 列表可以存放任意多个数据
3, 列表中可以存放任意类型的数据
4, 列表中数据之间 使用 逗号隔开

# 方式1, 使用类实例化的方式
# 1.1 定义空列表  变量 = list()
list1 = list()
print(type(list1), list1)  # <class 'list'> []
# 1.2 定义非空列表 , 也称为 类型转换  list(可迭代类型)  可迭代类型,能够使用 for 循环 就是 可迭代类型(比如 容器)
# 将容器中的 每个数据 都作为列表中一个数据进行保存
list2 = list('abcd')
print(list2)  # ['a', 'b', 'c', 'd']
# 方式2, 直接使用 [] 进行定义(使用较多)
# 2.1 定义空列表
list3 = []
print(list3)
# 2.2 定义非空列表
list4 = [1, 3.14, 'hello', False]
print(list4)
# 获取 列表中 第一个数据
print(list4[0])  # 1
# 获取列表中最后一个数据
print(list4[-1])  # False
# 获取中间两个数据即 3.14 和 'hello' (1 和 2)
print(list4[1: 3])  # [3.14, 'hello']

列表的增删改查

list1 = ['hello', 2, 3, 2, 3, 4]
# 查找 2 出现的下标
num = list1.index(2)
print(num)
# 统计数据 2 出现的次数
num1 = list1.count(2)
print(num1)
# 统计数据 20 出现的次数
num2 = list1.count(20)
print(num2)  # 0

增和删

# 定义空列表
list1 = []
print(list1)
# 添加数据 张三
list1.append('张三')
print(list1)
# 添加李四
list1.append('李四')
print(list1)
list1.append('王五')
list1.append('赵六')
print(list1)
# 删除最后一个数据
list1.pop()
print(list1)
# 删除第二个数据
name = list1.pop(1)
print('删除的对象为:', name)
print(list1)

修改数据

列表的排序

想要修改列表中的数据, 直接是所有下标即可 列表[下标] = 新数据

my_list = [1, 2]
my_list[0] = 10
print(my_list)
my_list[-1] = 200
print(my_list)

列表的反转 reverse()

字符串 反转 字符串[::-1]

列表 反转

  1. 列表[::-1] 得到一个新的列表, 原列表不会改动
  2. 列表.reverse() 直接修改原列表的数据
my_list = ['a', 'b', 'c', 'd', 'e']
# 1. 切片
my_list1 = my_list[::-1]
print('my_list :', my_list)
print('my_list1:', my_list1)
# 2. reverse
my_list.reverse()
print('my_list :', my_list)

排序

列表.sort() # 升序, 从小到大, 直接在原列表中进行排序
列表.sort(reverse=True) # 降序, 从大到下, 直接在原列表中进行排序

my_list = [1, 4, 7, 2, 5, 8, 3, 6, 9]
# 排序 升序
my_list.sort()
print(my_list)
# 降序
my_list.sort(reverse=True)
print(my_list)

列表嵌套

student_list = [["张三", "18", "功能测试"], ["李四", "20", "自动化测试"], ["王五", "21", "自动化测试"]]
# 张三
print(student_list[0][0])
# 李四
print(student_list[1][0])
# 张三 的信息添加一个 性别 男 ---> 向张三所在的列表 添加数据
student_list[0].append('男')
print(student_list)
# 删除 性别
student_list[0].pop()
print(student_list)
# 打印 所有人员的年龄
for info in student_list:  # info 是 列表
    print(info[1])

元组 tuple

my_list = [1, 4, 7, 2, 5, 8, 3, 6, 9]

排序 升序

my_list.sort()
print(my_list)

降序

my_list.sort(reverse=True)
print(my_list)
列表的嵌套 就是指 列表中数据都是列表.
student_list = [[“张三”, “18”, “功能测试”], [“李四”, “20”, “自动化测试”], [“王五”, “21”, “自动化测
试”]]

# 张三
print(student_list[0][0])
# 李四
print(student_list[1][0])
# 张三 的信息添加一个 性别 男 ---> 向张三所在的列表 添加数据
student_list[0].append('男')
print(student_list)
# 删除 性别
student_list[0].pop()
print(student_list)
# 打印 所有人员的年龄
for info in student_list: # info 是 列表
 print(info[1])

1, 元组 tuple, 使用的 ()
2, 元组和列表非常相似, 都可以存储多个数据, 都可以存储任意类型的数据
3, 区别就是 元组中的数据不能修改,列表中可以修改
4, 因为元组中的数据不能修改,所以只能 查询方法, 如 index, count ,支持下标和切片
5, 元组, 主要用于传参和返回值

交换变量

1, 在定义元组的时候, 小括号可以省略不写
2, 组包(pack), 将多个数据值组成元组的过程 a = 1, 2 # a = (1, 2)
3, 拆包(解包 unpack), 将容器中多个数据 分别给到多个变量, 需要保证容器中元素的个数和变量 的个数保持一致

a, b = b, a
print(a, b)
x, y, z = 'abc'
print(y) # b

字典 dict

1, 字典 dict, 使用 {} 表示
2, 字典是由键(key)值(value)对组成的, key: value
3, 一个键值对是一组数据, 多个键值对之间使用 逗号隔开
4, 在一个字典中, 字典的键 是不能重复的
5, 字典中的键 主要使用 字符串类型, 可以是数字
6, 字典中没有下标

# 1, 类实例化的方式
my_dict1 = dict()
print(type(my_dict1), my_dict1)  # <class 'dict'> {}
# 2, 直接使用 {}  定义
# 2.1 定义空字典
my_dict2 = {}
print(my_dict2)
# 2.2 定义非空字典, 姓名, 年龄, 身高, 性别
my_dict = {"name": "小明", "age": 18, "height": 1.78, "isMen": True}
print(my_dict)
# 将年龄改为 20
my_dict['age'] = 20
print(my_dict)
# 添加 体重 weight
my_dict['weight'] = 65
print(my_dict)
my_dict.pop('weight')
print(my_dict)
my_dict.pop('height')
print(my_dict)

增加和修改

字典[‘键’] = 值

1, 键 存在, 修改

2, 键 不存在, 添加

删除 字典的删除是根据字典的键 删除键值对 字典.pop(‘键’)

查询

方法一: 字典[‘键’] # 键 不存在,会报错

方法 二 字典.get(键) # 键不存在,返回 None

my_dict = {'name': '小明', 'age': 20}
# 获取 name 值
print(my_dict['name'])
print(my_dict.get('name'))
# 获取 性别 sex
# print(my_dict['sex'])   # 会报错, 因为 键不存在
print(my_dict.get('sex'))

遍历

1.遍历字典的键

for 变量 in 字典:
print(变量)

for 变量 in 字典.keys(): # 字典.keys() 可以获取字典所有的键
print(变量)

2.遍历字典的值

for 变量 in 字典.values(): # 字典.values() 可以获取字典中是所有的值
print(变量)

3.遍历字典的键和值

变量1 就是 键, 变量2 就是值

for 变量1, 变量2 in 字典.items(): # 字典.items() 获取的是字典的键值对
print(变量1, 变量2)

my_dict = {'name': '小明', 'age': 18, 'sex': '男'}
for k in my_dict:
    print(k)
print('*' * 30)
for k in my_dict.keys():
    print(k)
print('-' * 30)
for v in my_dict.values():
    print(v)
print('_*_' * 30)
for k, v in my_dict.items():
    print(k, v)

容器

in 操作符
in 是 Python 中的关键字.
数据 in 容器 可以⽤来判断 容器中是否包含这个数据, 如果包含返回 True,如果不包含返回 False
对于字典来说,判断的是 字典中是否包含这个键

集合

集合 set, {数据, 数据, …}

1, 集合中的数据是不能重复的, 即没有重复数据
2, 应⽤, 对列表进⾏去重操作 就是类型转换 , 可以将 列表转换为 集合, 然后再将集合转换为列表

# 遍历原列表
# for i in my_list:
# # 判断数据是否存在新列表
# if i in new_list:
# # 存在 什么都不操作
# pass
# else:
# # 不存在, 添加到新列表

函数

函数: 将多⾏代码(可以实现⼀个特定的功能)放在⼀块,并给它起⼀个名字. 在需要使⽤多⾏代码的时候, 可以使⽤名字代替.
定义函数的好处: 减少代码冗余(重复的代码不需要多次书写),提⾼编程效率

定义,就是给多⾏代码起名字的过程函数的定义需要使⽤ 关键字 def, 单词 define

定义函数的⼩技巧

1, 先不使⽤函数,将多⾏代码写完
2, 在多⾏代码的上⽅使⽤ def 起名字
3, 使⽤ tab 键, 将多⾏代码进⾏缩进

def login():
    print('1. 输入用户名')
    print('2. 输入密码')
    print('3. 输入验证码')
    print('4. 点击登录')
login()

参数

参数: 在函数定义的时候,在括号中写⼊变量,这个变量就称为是函数的参数. 形式参数(形参)
在函数调⽤的时候,可以给定义时候的形参传递具体的数据值,供其使⽤. 实际参数(实参)

def sun_2_num(a, b):  # a, b  形参
    c = a + b
    print(c)
sun_2_num(10, 20)   # 10, 20 实参 10 给 a,  20 给 b

函数的嵌套调⽤

def test01():
    print(1)
    print('func01')
    print(2)
# 2. 定义名为test02的函数,打印当前函数的名称,并 调用test01函数
def test02():
    print('func2')
    test01()
    print(4)

函数的返回值

1.在⼀个函数中,想要返回⼀个数据(想要有返回值), 需要使⽤ return 关键字

2.为什么返回值? 在函数中可能通过各种代码,得到的数据结果,想要在函数外部使⽤,就需要使⽤返回值
3, 如果函数有返回值, ⼀般在调⽤的时候 会使⽤变量来接收(保存) 返回值, 以便后续使⽤

4.return 关键字的作⽤, 将⼀个数据值返回到调⽤的地⽅

5.函数遇到 return 会结束函数的执⾏ return 关键字只能⽤在函数中
6, 如果⼀个函数 没有写 return,可以认为 返回值

def get_max(a, b):
    if a > b:
        return a
    else:
        return b
    print('我会执行吗, 不会执行')

模块导⼊的⽅法

1.import 模块名 # 模块名 就是代码⽂件名 ,不要 .py

2.from 模块名 import 功能名 # 导⼊指定的功 # 可以使⽤快捷键 Alt 回⻋

_name 变量

1, 导⼊模块的时候, 会执⾏模块中的代码
2, 作⽤: 如果在导⼊模块的时候, 模块中的部分代码不想被执⾏, 可以使⽤ name 来解决
3, name 变量,是 Python 解释器内置的变量(变量的值是⾃动维护的), 每个代码⽂件中,都有这个变量
3.1 在模块中 直接右键运⾏代码⽂件, name 变量的值是 ‘main
3.2 如果是被导⼊运⾏代码⽂件, name 变量的值 是 模块名(⽂件名)

class HouseItem:
    """家具类"""
    def __init__(self, name, area):
        self.name = name   # 名字
        self.area = area   # 占地面积
    def __str__(self):
        return f"{self.name} 占地面积 {self.area} 平米"
class House:
    """房子类"""
    def __init__(self, h_type, area):
        self.h_type = h_type    # 户型
        self.total_area = area  # 总面积
        self.free_area = area   # 剩余面积和总面积一样
        self.item_list = []     # 刚开始没有家具
    def __str__(self):
        return f"户型:{self.h_type}、总面积:{self.total_area} 平米、剩余面积:{self.free_area}平米、家具名称列表:{self.item_list}"
    def add_item(self, item):  # 1. 房子对象(self)   2. 家具对象(传参)
        """添加家具, item 家具对象"""
        # 1. 先判断房子的剩余面积和家具的占地面积的关系
        if self.free_area > item.area:  # 对象.属性  获取属性值
            print(f'添加家具: {item.name}')
            self.item_list.append(item.name)
            # 修改剩余面积
            self.free_area -= item.area
        else:
            print(f"房子剩余面积不足,换个大房子吧.....")
if __name__ == '__main__':
    # 创建家具对象
    bed = HouseItem('席梦思', 4)
    chest = HouseItem('衣柜', 2)
    table = HouseItem('餐桌', 1.5)
    print(bed)
    print(chest)
    print(table)
    # 创建房子
    house = House('三室一厅', 100)
    print(house)
    house.add_item(bed)
    print(house)
    house.add_item(chest)
    print(house)
    house.add_item(table)
    print(house)

可变类型与不可变类型

根据内存中的数据是否允许修改,将数据类型分为可变类型与不可变类型
简单理解: 不使用等号,能不能修改数据值
可变类型: 可以修改

  • 列表(list) list.append()
  • 字典(dict ) dict.pop()
  • 集合(set)
    不可变类型: 不允许修改
  • 数字类型(int , float , bool)
  • 字符串(str)
  • 元组(tuple)
my_tuple = (1, 2, [10, 20])  # 元组中 存储的 1 的地址, 2 的地址, 列表的地址
print(my_tuple, id(my_tuple), id(my_tuple[-1]), id(my_tuple[-1][-1]))
my_tuple[-1][-1] = 30  # 修改的列表中最后一个位置的引用
print(my_tuple, id(my_tuple), id(my_tuple[-1]), id(my_tuple[-1][-1]))

局部变量和全局变量

def func1():    num = 10  # 局部变量    print(num)

函数有多个返回值

def calc(a, b):
    """返回两个数的和及差"""
    return a + b, a - b
result = calc(10, 20)
print(result)

传参方式

def show_info(name, age):
    print(f"name:{name}, age: {age}")
# 位置传参
show_info('小明', 18)
# 关键字传参
show_info(age=18, name='张三')
# 混合使用
show_info('李四', age=17)
函数定义的时候, 给形参一个默认的数据值,这个参数就是缺省参数(默认参数)
def show_info(name, age=18, sex='保密'):
    print(name, age, sex)
# 调用
show_info('张三', 18, '男')

多值参数(可变参数/不定长参数)

1.在函数定义的时候,不确定在调用的时候,实参有多少个,此时可以使用 多值参数
2, 在普通的参数前边加上一个 *, 这个参数就变为 多值参数
3, 这个参数可以接收任意多个位置传参的数据, 类型 元组
4, 这个形参一般写作 args(arguments), 即 *args

在这里插入图片描述

匿名函数

匿名函数: 使用 lambda 关键字 定义的表达式,称为匿名函数

lambda 参数, 参数: 一行代码 # 只能实现简单的功能,只能写一行代码

匿名函数 一般不直接调用, 作为函数的参数使用的

user_list = [
    {'name': '张三', 'age': 22, 'title': '测试工程师'},
    {'name': '李四', 'age': 24, 'title': '开发工程师'},
    {'name': '王五', 'age': 21, 'title': '测试工程师'}]
# user_list.sort()   # 只能对数字,字符串排序
# 根据字典的 age 键 排序
# 想要对列表中的字典排序,需要 key 形参来指定根据字典中的什么键排序
# key 这个参数需要传递一个函数,使用匿名函数
# 列表.sort(key=lambda x: x['键'])
def func(x):
    return x['age']
user_list.sort(key=lambda x: x['age'])
# user_list.sort(key=func)
print(user_list)

案例

在这里插入图片描述

# 定义一个列表, 保存所有学生信息
# stu_list = []
stu_list = [{'name': 'aa', 'age': '11'}, {'name': 'bb', 'age': '22'}, {'name': 'cc', 'age': '33'}]
def make_student():
    """录入单个学生信息"""
    name = input('请输入姓名:')
    age = input('请输入年龄:')
    # 将学生信息存入字典
    stu_dict = {"name": name, "age": age}
    # 返回单个学生信息
    return stu_dict
def show_stu_info():
    """展示学生信息"""
    print('---------学生列表信息-----------')
    j = 1  # 初始序号
    for stu_dict in stu_list:  # stu_dict 字典
        print(f"{j}\t\t{stu_dict.get('name')}\t\t{stu_dict.get('age')}")
        j += 1  # 修改序号
    print('-------------------------------')
def get_student_counts():
    """获取学生的数量"""
    return len(stu_list)
def search_student():
    """查询学生的信息"""
    name = input('请输入要查询的学生姓名:')
    for stu_dict in stu_list:
        if name == stu_dict.get('name'):
            # 找到了这个学生
            print(f'姓名:{name}, 年龄: {stu_dict.get("age")}')
            # 终止
            return  # 结束函数的执行
    # 写在循环的外边
    print(f'对不起, 名字叫 [{name}]的学生不存在')
if __name__ == '__main__':
    # 录入三个学生信息
    # for i in range(3):
    #     stu = make_student()
    #     # 需要将单个学生添加到列表
    #     stu_list.append(stu)
    #
    # print(stu_list)
    # 展示学生信息
    show_stu_info()
    # 获取学生数量
    print('学生总数为: ', get_student_counts())
    search_student()
    print('-------------------------------')
def get_student_counts():
    """获取学生的数量"""
    return len(stu_list)
def search_student():
    """查询学生的信息"""
    name = input('请输入要查询的学生姓名:')
    for stu_dict in stu_list:
        if name == stu_dict.get('name'):
            # 找到了这个学生
            print(f'姓名:{name}, 年龄: {stu_dict.get("age")}')
            # 终止
            return  # 结束函数的执行
    # 写在循环的外边
    print(f'对不起, 名字叫 [{name}]的学生不存在')
if __name__ == '__main__':
    # 录入三个学生信息
    # for i in range(3):
    #     stu = make_student()
    #     # 需要将单个学生添加到列表
    #     stu_list.append(stu)
    #
    # print(stu_list)
    # 展示学生信息
    show_stu_info()
    # 获取学生数量
    print('学生总数为: ', get_student_counts())
    search_student()

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

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

相关文章

YOLOv8独家原创改进: AKConv(可改变核卷积)

1.AKConv原理介绍 地址:2311.11587 (arxiv.org) 摘要:基于卷积运算的神经网络在深度学习领域取得了令人瞩目的成果,但标准卷积运算存在两个固有的缺陷。一方面,卷积运算仅限于局部窗口,无法捕获其他位置的信息, 并且它的采样形状是固定的。 另一方面,卷积核的大小固定为…

中国速度!滑湿人自己的MFC第一课!

前言&#xff1a; 这&#xff01;是一个&#xff01;新的专栏&#xff01; 因为&#xff01;面向对象的程序设计&#xff01;已经&#xff01;学的差不多了&#xff01; 我谭哥那本大厚书&#xff01;也快&#xff01;学完了&#xff01; 于是&#xff01;sgq&#xff01;为…

springboot+layuimini实现树形表格

树形表格实现增删改查 这里写目录标题 效果图前端页面代码前端插件后端代码controllerserviceserviceImpl 实现类Entitymapperxml mybatis代码数据表 效果图 前端页面代码 <!DOCTYPE html> <html lang"en" xmlns:th"http://www.thymeleaf.org"&g…

【机器学习300问】87、学习率这种超参数在优化时选择随机搜索方法,为什么要在对数尺度范围进行随机搜索?

在超参数优化过程中&#xff0c;对数尺度范围进行随机采样对于某些类型的超参数来说是非常有效的&#xff0c;特别是当超参数的有效值跨越几个数量级时。学习率就是这样一种超参数&#xff0c;它可以从非常小&#xff08;例如&#xff09;到相对大的值&#xff08;例如&#xf…

Vscode----远程服务器改名

问题描述 一开始Autodl服务器机子很多,但是我使用vscode的时候他们的名字都一样,导致每次要打开机子是都需要重新输入ssh和密码 解决方法 修改vscode端服务器的名字即可解决 打开远程设置,选择你的ssh配置文件 将Host改为你想要的名字,保存刷新即可 点击访问博客查看更多…

机器学习作业4——朴素贝叶斯分类器

目录 一、理论 一个例子&#xff1a; 二、代码 对于代码的解释&#xff1a; 1.fit函数&#xff1a; 2.predict函数: 三、实验结果 原因分析&#xff1a; 一、理论 朴素贝叶斯分类器基于贝叶斯定理进行分类&#xff0c;通过后验概率来判断将新数据归为哪一类。通过利用贝…

“知识世界”项目的自动化测试

目录 1.项目介绍 1.1 项目功能介绍 2. 项目测试 2.1 需求分析 2.2 测试计划 2.3 设计测试用例 &#xff08;1&#xff09; 设计 登录 的测试用例 &#xff08;2&#xff09;设计 文章列表页 的测试用例 &#xff08;3&#xff09;设计 详情页 的测试用例 &#xff08…

线下研讨会 技术沙龙|乐鑫芯片与 ESP RainMaker® 为科技初创企业赋能

众多科技初创企业在智能硬件市场迅猛发展的背景下&#xff0c;对不断变化的需求展现出了高度的敏锐性&#xff0c;期望能够快速将其转化为切实的产品方案。然而&#xff0c;面对复杂繁重的软硬件集成任务&#xff0c;这些企业往往容易陷入研发瓶颈、资金短缺以及效率低下等多重…

BGP综合大实验

实验要求 1.AS1中存在两个环回&#xff0c;一个地址是192.168.1.0/24&#xff0c;改地址不能在任何协议中宣告&#xff1b;AS3中存在两个环回&#xff0c;一个地址为192.168.2.0/24&#xff0c;该地址不能在任何协议中宣告&#xff0c;最终要求这两个环回可以ping通&#xff1b…

【超详细】跑通YOLOv8之深度学习环境配置1

环境配置1下载安装内容如下&#xff1a; Anaconda&#xff1a;https://www.anaconda.com/download/success VScode&#xff1a;https://code.visualstudio.com/Download Pycharm&#xff1a;https://www.jetbrains.com/pycharm/download/?sectionwindows Visual Studio2019&a…

Linunx应急响应

Linux应急流程 1,请提交攻击者的 IP 地址2,请提交攻击者使⽤的操作系统3,请提交攻击者进⼊⽹站后台的密码4,请提交攻击者⾸次攻击成功的时间&#xff0c;格式&#xff1a;DD/MM/YY:hh:mm:ss5,请提交攻击者上传的恶意⽂件名&#xff08;含路径&#xff09;6,请提交攻击者写⼊的恶…

Python vs MATLAB:选择深度学习的首选编程语言

Python vs MATLAB&#xff1a;选择深度学习的首选编程语言 在深度学习领域&#xff0c;编程语言的选择对于初学者的学习路径和未来的职业发展至关重要。目前&#xff0c;Python和MATLAB都是进行科学计算和数据分析的流行工具&#xff0c;但它们在深度学习社区中的应用和受欢迎…

天机学堂—学习辅助功能(含场景问答和作业)

我的课表 需求分析 原型图 管理后台 用户端 流程图 数据设计 接口设计 支付成功报名课程后, 加入到我的课表(MQ)分页查询我的课表查询我正在学习的课程根据id查询指定课程的学习状态删除课表中的某课程 代码实现 数据表设计 添加课程到课表&#xff08;非标准接口&#x…

猫头虎分享已解决Bug || **Babel转换器下载问题** Failed to resolve babel-loader dependency`

猫头虎分享已解决Bug &#x1f42f; || Babel转换器下载问题 &#x1f6ab;Failed to resolve babel-loader dependency 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a…

网络 | 应用层-websocket协议报文格式解析

websocket的官方文档为rfc(request for comments)&#xff0c;是网络协议的规范文档。它包含了许多计算机世界的核心知识 除了这里的websocket&#xff0c;它里边还包含我们熟知的http,tcp等协议的解析。 websocket协议对应的编号是rfc 6455 websocket协议格式解析 由图可知&a…

【RAG论文】RAG中半结构化数据的解析和向量化方法

论文简介 论文题目&#xff1a; 《A Method for Parsing and Vectorization of Semi-structured Data used in Retrieval Augmented Generation》 论文链接&#xff1a; https://arxiv.org/abs/2405.03989 代码: https://github.com/linancn/TianGong-AI-Unstructure/tree/m…

数据结构学习/复习13

一、选择排序 1.直接选择排序 2.堆排序 3.性能测试 二、交换排序 1.冒泡排序 2.快速排序 1.Hore版(递归) 2.随机选关键字Hore版(递归) 3.三数取中Hore版(递归) 3.挖坑法改进Hore版(递归) 4.前后指针法 5.小区间优化 5.性能测试 注意事项1&#xff1a;关键字选取时&#xff0c…

微服务架构与单体架构

微服务架构与与单体架构比较 微服务架构是一种将应用程序作为一组小的、独立服务的系统架构风格&#xff0c;每个服务运行在其自己的进程中&#xff0c;并通常围绕业务能力组织。这些服务通过定义良好且轻量级的机制&#xff08;通常是HTTP REST API&#xff09;进行通信。微服…

常用的简单友好的工单系统(免费)- WGCAT

最近在项目中&#xff0c;有工单系统的需求场景&#xff0c;所以想寻找一款轻量简单的运维工单软件&#xff0c;主要用来记录和处理工作中的一些故障、维护&#xff0c;主要用来记录设备的维护状态&#xff0c;包括服务器、主机、交换机那些 WGCAT&#xff0c;是一款简单轻量的…

上位机图像处理和嵌入式模块部署(树莓派4b的软件源)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 很多文章都建议替换一下树莓派4b的软件源&#xff0c;不过我自己实际使用下来&#xff0c;官方的软件下载速度其实还可以。这里下载的时候&#xf…