python学习 day8_容器的方法文件操作
python学习day8
- 列表的相关函数
- 增
- 1.append 向列表的末尾添加新的元素
- 2.insert 在指定索引之前插入元素
- 3.extend 迭代追加所有元素
- 删
- 1.pop 通过指定索引删除元素,若没有索引移除最后那个 (推荐)
- 2.remove 通过给予的值来删除,如果多个相同元素,默认删除第一个
- 3.clear 清空列表
- 改查
- index 获取某个值在列表中的索引
- count 计算某个元素出现的次数
- sort 列表排序(默认小到大排序)
- 对字母进行排序 (字母排序依照ascii编码)
- 可以对中文进行排序,但是无规律可循
- reverse 列表反转操作
- tuple 元组中的函数只有2个:count、 index 跟列表中的方法使用一模一样
- 深拷贝 和 浅拷贝
- (1) 浅拷贝 (只拷贝一级容器所有的元素,其他层级延续以前的数据)
- 方法一
- 方法二 (推荐)
- (2) 深拷贝 (所有层级的元素都单独拷贝一份,形成独立的副本)
- (3) 总结:copy 和 deepcopy 谁更快 浅拷贝更快~
- 字典相关函数
- 增 fromkeys()
- 删
- pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)**
- popitem() 删除最后一个键值对
- clear() 清空字典
- 改
- update() 批量更新 (有该键就更新,没该键就添加)
- 查
- get() 通过键获取值(若没有该键可设置默认值,预防报错)
- 重点语法:
- keys() 将字典的键组成新的可迭代对象
- values() 将字典中的值组成新的可迭代对象
- items() 将字典的键值对凑成一个个元组,组成新的可迭代对象
- items()的变量的解包
- 集合的相关操作 (交叉并补)
- 1.intersection() 交集,简写为:&
- 2.difference() 差集,简写为:-
- 3.union() 并集,简写为:|
- 4.symmetric_difference() 对称差集 (补集情况涵盖在其中) 简写为:^
- issubset() 判断是否是子集,简写为:<
- issuperset() 判断是否是父集,简写为:>
- isdisjoint() 检测两集合是否不相交 不相交 True 相交False
- 集合相关的函数
- 增
- add() 向集合中添加数据 (一次加一个)
- update() 迭代着增加 (一次加一堆)
- 删
- clear() 清空集合
- pop() 随机删除集合中的一个数据
- discard() 删除集合中指定的值(不存在的不删除 推荐使用)
- remove() 删除集合中指定的值(不存在则报错)(了解)
- 冰冻集合(了解)
- 空的冰冻集合
- 冰冻集合可遍历
- 只能做交叉并补
- 文件操作
- 1.文件的写入操作
- 2.文件的读取操作
- 3.字节流的转换
- 4.存储字节流
- 5.读取字节流
- 复制文件夹中 集合.png 这张图片
- 2.再把所有读出来的二进制字节流写入到另外一个文件中
列表的相关函数
增
1.append 向列表的末尾添加新的元素
lst = ["黄俊"]
lst.append("王振")
print(lst) # ["黄俊","王振"]
2.insert 在指定索引之前插入元素
lst = ['黄俊', '王振']
lst.insert(1,"刘伟")
print(lst) # ['黄俊','刘伟','王振']
3.extend 迭代追加所有元素
写法上只能追加另一个序列,不能直接在方法中写入多个值
lst = ['黄俊', '王振']
tup = ("宋普东","王赢钱","陈宁波")
lst.extend(tup)
print(lst) # ['黄俊','王振','宋普东','王赢钱','陈宁波']
删
1.pop 通过指定索引删除元素,若没有索引移除最后那个 (推荐)
注意:.pop()会返回被删除值
- 默认删除最后一个
lst = ["魏富强","宋清零","黎建忠","朱家熠"]
res = lst.pop()
print(res) # "朱家熠"
print(lst) # ["魏富强","宋清零","黎建忠"]
- 可以指定下标删除
lst = ["魏富强","宋清零","黎建忠","朱家熠"]
res = lst.pop(1)
print(res) # '宋清零'
print(lst) # ["魏富强","黎建忠","朱家熠"]
2.remove 通过给予的值来删除,如果多个相同元素,默认删除第一个
lst = ["魏富强","宋清零","黎建忠","黎建忠","朱家熠"]
lst.remove("黎建忠")
print(lst) # ["魏富强","宋清零","黎建忠","朱家熠"]
3.clear 清空列表
lst = ["魏富强","宋清零","黎建忠","朱家熠"]
lst.clear()
print(lst) # []
改查
index 获取某个值在列表中的索引
- 当这个值不存在时 , 会报错
lst = ["魏富强","宋清零","黎建忠","朱家熠","魏富强","魏富强"]
res = lst.index("宋清零") # 1
# res = lst.index("宋清零123") # error
print(res)
count 计算某个元素出现的次数
lst = ["魏富强","宋清零","黎建忠","朱家熠","魏富强","魏富强"]
res = lst.count("魏富强")
print(res) # 3
sort 列表排序(默认小到大排序)
lst = [100,200,90,-3,0,12]
lst.sort()
print(lst) # [-3, 0, 12, 90, 100, 200]
从大到小排列:
lst = [100,200,90,-3,0,12]
lst.sort(reverse = True)
print(lst) # [200, 100, 90, 12, 0, -3]
对字母进行排序 (字母排序依照ascii编码)
字母是一位一位的进行比较,如果第一位相同,再去比较第二位,依次类推
lst = ["kobe","james","oneal","jordon","iverson"]
lst.sort()
print(lst) # ['iverson', 'james', 'jordon', 'kobe', 'oneal']
可以对中文进行排序,但是无规律可循
lst = ["王闻","周杰伦","罗志祥","蔡徐坤","王振"]
lst.sort()
print(lst) # ['周杰伦', '王振', '王闻', '罗志祥', '蔡徐坤']
reverse 列表反转操作
lst = [100 ,200,300,-3]
lst.reverse()
print(lst) # [-3, 300, 200, 100]
tuple 元组中的函数只有2个:count、 index 跟列表中的方法使用一模一样
可以对元组中的列表进行列表函数的操作:
tup = (1,2,3,4,[5,6,7])
tup[-1].append(8)
print(tup) # (1, 2, 3, 4, [5, 6, 7, 8])tup = (1,2,3,[4,5,6,(7,8,9)])
tup[-1][-1] = 100 # 将列表中的元组(7,8,9)这个元素改为100
print(tup) # (1, 2, 3, [4, 5, 6, 100])
深拷贝 和 浅拷贝
我们先来看下下组试验:
a = 19
b = a
print(id(b),id(a)) # 双方id相同
a = 20
print(b) # 19 # 变更了a的赋值,b不变lst1 = [1,2,3]
lst2 = lst1
lst1.append(4) # 变更了lst1的赋值
print(lst2) # lst2也跟着变了
容器类型中不可变数据的内存地址不会因容器的内存地址改变而改变。
不可变数据: int float bool complex str tuple
(1) 浅拷贝 (只拷贝一级容器所有的元素,其他层级延续以前的数据)
方法一
语法:.copy()
lst = [1,2,3]
lst2 = lst.copy()
lst.append(5)
print(lst) # [1, 2, 3, 5]
print(lst2) # [1, 2, 3]lst2[0] = 2
print( id(lst[0]))
print( id(lst2[0])) # 对应元素的值不同,双方id不同,反之则相同
方法二 (推荐)
语法:copy.copy()
copy模块.copy函数()
import copy
lst = [1,2,3]
lst2 = copy.copy(lst)
lst.append(10)
print(lst)
print(lst2)
(2) 深拷贝 (所有层级的元素都单独拷贝一份,形成独立的副本)
语法:copy.deepcopy()
import copy
lst = [1,2,3,[4,5,6]]
lst2 = copy.deepcopy(lst)
lst[-1].append(888)
print(lst) # [1, 2, 3, [4, 5, 6, 888]]
print(lst2) # [1, 2, 3, [4, 5, 6]]print(id(lst[-1]) , id(lst2[-1])) # 不相同
- 深拷贝可以应用在字典当中:
import copy
dic = {"a":1,"b":[1,2,3]}
dic2 = copy.deepcopy(dic)
dic["b"].append(4)
print(dic) # {'a': 1, 'b': [1, 2, 3, 4]}
print(dic2) # {'a': 1, 'b': [1, 2, 3]}
(3) 总结:copy 和 deepcopy 谁更快 浅拷贝更快~
浅拷贝: 只拷贝第一层级所有的元素, copy.copy()
深拷贝: 拷贝所有层级的元素,都单独开启新的空间 copy.deepcopy()
- (地址:[不可变数据]会暂时指向原数据,[可变数据]会独立开辟新空间)
可变数据: list set dict
不可变数据: int float bool complex str tuple
字典相关函数
增 fromkeys()
推荐写法:
dic = {}
dic["top"] = "韩国the shy"
dic["middle"] = "肉鸡rookie"
dic["bottom"] = "a_water"
dic["jungle"] = "鞋王"
dic["support"] = "bao_blue"
print(dic)
fromkeys() 使用一组键和默认值创建字典:
lst = ["a","b","c"]
dic = {}.fromkeys(lst,None) # 将列表所有元素转换成键
print(dic)
出错注意点:
lst = ["a","b","c"]
dic2 = {}.fromkeys(lst,[1,2]) # 将列表所有元素转换成键,并统一赋予对应值[1,2]
dic2["a"].append(3) # 给键'a'对应的列表增加元素3,别的键对应的列表也都增加了元素3
print(dic2) # {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}
改进方式:使用推荐写法
dic3 = {}
dic3["a"] = [1,2]
dic3["b"] = [1,2]
dic3["c"] = [1,2]
dic3["a"].append(3) # 只给键a对应的列表增加了元素3
print(dic3) # {'a': [1, 2, 3], 'b': [1, 2], 'c': [1, 2]}
删
pop() 通过键去删除键值对 (若没有该键可设置默认值,预防报错)**
删除键值对:
dic = {'top': '韩国the shy', 'middle': '肉鸡rookie', 'bottom': 'a_water', 'jungle': '鞋王', 'support': 'bao_blue'}
res = dic.pop("bottom")
print(res) # a_water 返回的是被删除的键对应的值
print(dic) # {'top': '韩国the shy', 'middle': '肉鸡rookie', 'jungle': '鞋王', 'support': 'bao_blue'}
可以在pop当中设置默认值,预防报错:
dic = {'top': '韩国the shy', 'middle': '肉鸡rookie', 'bottom': 'a_water', 'jungle': '鞋王', 'support': 'bao_blue'}
res = dic.pop("bottom123","没有")
print(res) # 没有 没有对应值,返回设置的默认值
popitem() 删除最后一个键值对
dic = {'top': '韩国the shy', 'middle': '肉鸡rookie', 'bottom': 'a_water', 'jungle': '鞋王', 'support': 'bao_blue'}
res = dic.popitem()
print(dic) # {'top': '韩国the shy', 'middle': '肉鸡rookie', 'bottom': 'a_water', 'jungle': '鞋王'}
print(res) # ('support', 'bao_blue') 返回的是被删除的键值对
clear() 清空字典
dic = {'top': '韩国the shy', 'middle': '肉鸡rookie', 'bottom': 'a_water', 'jungle': '鞋王', 'support': 'bao_blue'}
dic.clear()
print(dic) # {}
改
update() 批量更新 (有该键就更新,没该键就添加)
方法一(推荐):
dic = {"ww":"大帅哥","spd":"渣男","sql":"负心男"}
newdic = {"ww":"美男子","wz":"一表人才","yh":"未来的土豪"}
dic.update(newdic)
print(dic) # {'ww': '美男子', 'spd': '渣男', 'sql': '负心男', 'wz': '一表人才', 'yh': '未来的土豪'}
方法二:
dic = {"ww":"大帅哥","spd":"渣男","sql":"负心男"}
dic.update(hj="未来战士",wyq="警察") # 括号中输入键值对时,用等号连接键值对
print(dic) # {'ww': '大帅哥', 'spd': '渣男', 'sql': '负心男', 'hj': '未来战士', 'wyq': '警察'}
查
get() 通过键获取值(若没有该键可设置默认值,预防报错)
get方法可以预防报错,默认返回None:
dic = {"ww":"大帅哥","spd":"渣男","sql":"负心男"}
# res = dic["www"]
res = dic.get("www") # 返回None
get方法可以设置默认值:
dic = {"ww":"大帅哥","spd":"渣男","sql":"负心男"}
res = dic.get("www","该键不存在")
print(res) # 该键不存在
重点语法:
可迭代对象: 容器类型数据 , range对象 , 迭代器
keys() 将字典的键组成新的可迭代对象
dic = {"wy":"智多星","lzs":"花和尚","zs":"浪里白条"}
res = dic.keys()
print(res) # dict_keys(['wy', 'lzs', 'zs'])
values() 将字典中的值组成新的可迭代对象
dic = {"wy":"智多星","lzs":"花和尚","zs":"浪里白条"}
res = dic.values()
print(res) # dict_values(['智多星', '花和尚', '浪里白条'])
items() 将字典的键值对凑成一个个元组,组成新的可迭代对象
dic = {"wy":"智多星","lzs":"花和尚","zs":"浪里白条"}
res = dic.items()
print(res) # dict_items([('wy', '智多星'), ('lzs', '花和尚'), ('zs', '浪里白条')])
items()的变量的解包
dic = {"wy":"智多星","lzs":"花和尚","zs":"浪里白条"}
res = dic.items()
for k,v in res:print(k,v)
'''
输出为:
wy 智多星
lzs 花和尚
zs 浪里白条
'''
集合的相关操作 (交叉并补)
1.intersection() 交集,简写为:&
同时拥有的元素
set1 = {"the shy" , "rookie" , "jacklove" , "神秘男孩"}
set2 = {"蔡国庆","倪萍","赵忠祥","神秘男孩"}
res = set1.intersection(set2)
print(res) # {'神秘男孩'}# 简写 &
res = set1 & set2
print(res)
2.difference() 差集,简写为:-
某一方与另一方相比没有的元素,取第一个集合里独有的元素
set1 = {"the shy" , "rookie" , "jacklove" , "神秘男孩"}
set2 = {"蔡国庆","倪萍","赵忠祥","神秘男孩"}
res = set1.difference(set2)
print(res) # {'rookie', 'jacklove', 'the shy'}# 简写 -
res = set1 - set2
print(res)
3.union() 并集,简写为:|
双方所有元素的合集(去重)
set1 = {"the shy" , "rookie" , "jacklove" , "神秘男孩"}
set2 = {"蔡国庆","倪萍","赵忠祥","神秘男孩"}
res = set1.union(set2) # {'神秘男孩', 'the shy', '蔡国庆', '倪萍', '赵忠祥', 'rookie', 'jacklove'}
print(res)# 简写 |
res = set1 | set2
print(res)
4.symmetric_difference() 对称差集 (补集情况涵盖在其中) 简写为:^
双方的合集去掉交集后的剩余部分
set1 = {"the shy" , "rookie" , "jacklove" , "神秘男孩"}
set2 = {"蔡国庆","倪萍","赵忠祥","神秘男孩"}
res = set1.symmetric_difference(set2)
print(res) # {'赵忠祥', '蔡国庆', 'the shy', 'rookie', '倪萍', 'jacklove'}## 简写 ^
res = set1 ^ set2
print(res)
issubset() 判断是否是子集,简写为:<
子集:集合内所有元素对方都有
父集:拥有对方所有元素并且还有更多
set1 = {"张恒","杨浩","刘伟"}
set2 = {"刘伟"}
res = set2.issubset(set1)
print(res) # True# 简写:
res = set1 < set2
print(res) # False
issuperset() 判断是否是父集,简写为:>
set1 = {"张恒","杨浩","刘伟"}
set2 = {"刘伟"}
res = set1.issuperset(set2)
print(res)# 简写:
res = set1 > set2
print(res)
isdisjoint() 检测两集合是否不相交 不相交 True 相交False
set1 = {"张恒","杨浩","刘伟"}
set2 = {"刘伟"}
res = set1.isdisjoint(set2)
print(res) # False
集合相关的函数
增
add() 向集合中添加数据 (一次加一个)
setvar = {"王振"}
setvar.add("朱佳怡")
print(setvar) # {'朱佳怡', '王振'}
update() 迭代着增加 (一次加一堆)
setvar = {"王振"}
lst = ["a","b","c123"]
setvar.update(lst)
print(setvar) # {'a', 'b', 'c123', '王振'}strvar = "abc"
setvar = set()
setvar.update("abc")
print(setvar) # {'c', 'a', 'b'}
删
clear() 清空集合
setvar = {"a","b"}
setvar.clear()
print(setvar)
pop() 随机删除集合中的一个数据
setvar = {"a","b"}
res = setvar.pop()
print(res) # b b被随机删除了
print(setvar) # {'a'} setvar里只剩a了
discard() 删除集合中指定的值(不存在的不删除 推荐使用)
setvar = {"a","b"}
setvar.discard("a")
print(setvar)
remove() 删除集合中指定的值(不存在则报错)(了解)
setvar = {"a","b"}
setvar.remove("a")
print(setvar)
setvar.remove("aaa")
print(setvar)
冰冻集合(了解)
frozenset 可强转容器类型数据变成冰冻集合
特征:冰冻集合一旦创建,不能再做任何的添加或者删除操作,只能做交叉并补
空的冰冻集合
fz = frozenset()
print(fz , type(fz)) # frozenset() <class 'frozenset'>
冰冻集合可遍历
lst = ["a","b","c"]
fz = frozenset(lst)
print(fz,type(fz)) # frozenset({'a', 'c', 'b'}) <class 'frozenset'>
for i in fz:print(i) # 无序的输出 a , b , c
只能做交叉并补
fz1 = frozenset(["a","b","c"])
fz2 = frozenset(["a","b","c","d"])
res = fz1 & fz2
res = fz2 - fz1
print(res) # frozenset({'d'})
不能在冰冻集合中做任何修改元数据的操作
文件操作
fp = open(“文件名”,“模式”,“字符编码集”)
fp 文件的io对象 (文件句柄)
i : input 输入
o : output 输出
t 模式:将文件以字符的形式进行操作(写法为wt、rt、at,默认操作模式就是t,可以省略不写t)
b 模式:将文件以字节流的形式进行操作
1.文件的写入操作
文件不存在则创建文件,存在的话则打开清空内容,并且将文件指针放在文件的开头
- fp = open(“文件名”,“模式”,“字符编码集”)
‘’‘r"E:\python30\ceshi1.txt" 可以指定路径’’'
(1) 打开文件 (把冰箱门打开)
fp = open("ceshi1.txt",mode="w",encoding="utf-8")
写入内容 (把大象塞进去)
fp.write("把大象塞进去")
关闭文件 (把冰箱门关上)
fp.close()
2.文件的读取操作
文件不存在则报错! 存在的话则打开文件,并且将文件指针放在文件的开头
(1) 打开文件
fp = open("ceshi1.txt",mode="r",encoding="utf-8")
(2) 读取内容
res = fp.read()
print(res)
3) 关闭文件
fp.close()
3.字节流的转换
二进制的字节流:用来传输或者存储的数据 bytes
b"123" 要求: b开头的字符串 ,内容必须是ascii编码
- 将字符串和字节流(Bytes流)类型进行转换 (参数写成转化的字符编码格式)
#encode() 编码 将字符串转化为字节流(Bytes流)
#decode() 解码 将Bytes流转化为字符串
将字符串转化为字节流:
strvar = "我爱你"
res = strvar.encode("utf-8")
print(res) # b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'
将Bytes流转化为字符串:
res = b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'
strvar2 = res.decode("utf-8")
print(strvar2) # 我爱你
len 算一下字节流的长度(一个字符是3个字节)
res = b'\xe6\x88\x91\xe7\x88\xb1\xe4\xbd\xa0'
num = len(res)
print(num) # 9
4.存储字节流
- wb 与 rb 来存储二进制字节流
1.打开文件
字节流模式下,无需指定编码集
fp = open("ceshi2.txt",mode="wb")
str_bytes = "我好想你,我的baby".encode("utf-8")
2.写入字节流
fp.write(str_bytes)
3.关闭文件
fp.close()
5.读取字节流
1.打开文件
字节流模式下,无需指定编码集
fp = open("ceshi2.txt",mode="rb")
2.读取字节流
res = fp.read()
3.关闭文件
fp.close()
复制文件夹中 集合.png 这张图片
- 图片 音频 视频这样的文件都是二进制bytes
1.先把所有的二进制字节流读取出来
fp = open("集合.png",mode="rb")
str_bytes = fp.read()
fp.close()print(str_bytes) # 一堆字节流
2.再把所有读出来的二进制字节流写入到另外一个文件中
fp = open("集合2.png",mode="wb")
fp.write(str_bytes)
fp.close()
python学习 day8_容器的方法文件操作相关推荐
- Python学习系列(五)(文件操作及其字典)
Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...
- Python学习笔记:目录与文件操作
文章目录 一.案例演示 1.导入os与shutil模块 2.获取当前工作目录 3.创建目录 4.切换当前目录 5.创建文件,写入内容 6.打开文件,查看内容 7.查看目录信息 8.拷贝文件 9.文件改 ...
- python学习[第十四篇] 文件的输入与输出
python学习[第十四篇] 文件的输入与输出 标准文件类型 一般来说只要程序一执行,就会访问3个文件: 标准输入(键盘) stdin 标准输出(显示器缓冲区) stdout 默认输出到屏幕 标准错误 ...
- Python学习第九篇:zipfile 库操作压缩包
Python学习第九篇:zipfile 库操作压缩包 -- 活动地址:CSDN21天学习挑战赛 zipfile是python里用来做zip格式编码的压缩和解压缩的 zipfile里有两个非常常用的 ...
- [python教程入门学习]python学习笔记(CMD执行文件并传入参数)
本文章向大家介绍python学习笔记(CMD执行文件并传入参数),主要包括python学习笔记(CMD执行文件并传入参数)使用实例.应用技巧.基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋 ...
- python学习记录part10:读写文件
python学习part10:第十章 文件和异常 教材:<python:从入门到实践> 今天有别的学习任务,相应的 自由学习时间也就少了,所以今天学习内容不多,估计以后也不能保持很快的进度 ...
- Python学习笔记Task11.魔法方法
Python学习笔记Task11.魔法方法 魔法方法格式__init__ 1.基本 init(self[,-]) new(cls[,-]) del(self) str(self) repr(self) ...
- C/C++学习之路_九:文件操作
C/C++学习之路_九:文件操作 目录 概述 文件的顺序读写 文件的随机读写 windows和linux文本 获取文件状态 删除文件.重命名文件 文件缓冲区 1. 概述 1. 磁盘文件和设备文件 磁盘 ...
- python 系统学习笔记(八)---文件操作
模式 描述 r 以读方式打开文件,可读取文件信息. w 以写方式打开文件,可向文件写入信息.如文件存在,则清空该文件,再写入新内容 a 以追加模式打开文件(即一打开文件,文件指针自动移到文件末尾),如 ...
最新文章
- 解决:Plugin ‘maven-compiler-plugin:3.1‘ not found
- python 执行ping命令_Python黑科技:在家远程遥控公司电脑,python+微信一键连接!...
- leetcode 58. Length of Last Word 题解【C++/Java/Python/JS】
- 572. 另一个树的子树
- livecd制作 centos
- MySQL排序查询介绍
- 修改putty远程登录控制台的字体
- 华硕笔记本装linux系统教程视频,在新买的华硕笔记本电脑安装linux手记
- 二级c语言评分标准一样吗,计算机二级评分严格吗 步骤错了有分吗
- 计算机应用与基础进制,计算机应用基础选择题-删进制、字符题(2).docx
- HandyJSON:Swift语言JSON转Model工具库
- 【FLUENT案例】04:利用DDPM+DEM模拟鼓泡流化床
- 20154319 实验七 网络诈骗技术防范
- 蚂蚁课堂视频笔记思维导图-3期 九、分布式缓存架构
- 什么是双线性映射(Bilinear Mapping )?
- 实战项目一、安居客(北京) 二手房抓取房源信息
- 【Proteus仿真】Arduino UNO+PCF8574+LCD1602+MPX4250电子秤
- 如何下载安装jenkins
- docker容器打包成镜像并上传至dockerhub
- [robot_state_publisher-4] process has died [pid 20533, exit code 1, cmd /opt/ros/melodic/lib/robot_s
热门文章
- 外链是什么意思,如何做好高质量的外链建设?
- 深入浅析js原型链和vue构造函数
- 网络安全内外忧患,发现儿童平板电脑中含有漏洞,容易遭遇***.
- 软件定义网络(Software Defined Network,SDN)
- The Sandbox 向 World of Women 基金会捐赠 2,500 万美元,用于支持女性进入元宇宙
- Probe Card 探针卡理论
- PowerDesigner导出chm
- 虚拟电厂负荷控制系统三维可视化监控 | 数字孪生
- java kill线程_如何优雅的 kill 线程
- HVS颜色空间的提取