这是我参与2022首次更文挑战的第17天,活动详情查看:2022首次更文挑战
今天分享一些使用的 python 小技巧,从接触 AI 用 python 也快 2 年了,也遇到问题,尝试一些解决方案来。感觉接下来介绍解决方案都是比较实用,也希望对您有所帮助。
两个列表之间的差
我们现在有两个列表分别是 models 和 object_detections
models = ['fastRCNN', 'YOLO', 'mask-rcnn', 'deeplab', 'FCN']
object_detections = ['fastRCNN', 'YOLO', 'mask-rcnn']
我们想找到一些模型,也就是 models 和 object_detections 也就是这元素存在于 models 而不存在 object_detections
models_set = set(models)
object_detections_set = set(object_detections)
segmentation = list(models_set.symmetric_difference(object_detections_set))
print(segmentation)
计算 python 对象所占用的内存大小
对于任何数据结构(如列表、字典或任何对象)来存储数值或记录时,都要检查数据结构所占用的内存的大小。查看数据结构使用了多少内存是一个好的做法是用 sys.getsizeof返回对象的大小,单位为字节。
import sys
object_detections = ['fastRCNN', 'YOLO', 'mask-rcnn']
print("size of list = ",sys.getsizeof(object_detections))
#Memory: 4076 kilobyte(s)
列表去重
很多数情况,需要从列表中移除重复的元素。 通常我们会用 set 这个自动可以去重的集合,在 set 中是不允许有重复的元素。
listNumbers = [1,2,2,5,5,5,6,7,8]
print("Original= ", listNumbers)
listNumbers = list(set(listNumbers))
print("After removing duplicate= ", listNumbers)
Original= [1, 2, 2, 5, 5, 5, 6, 7, 8]
After removing duplicate= [1, 2, 5, 6, 7, 8]
如何有效地比较两个列表
通常我们需要比较两个列表是否相同,
from collections import Counter
one = [1, 5, 3, 7, 9]
two = [9, 1, 3, 5, 7]
print("比较两个列表是否相同", Counter(one) == Counter(two))
- 对象是 hashable 可以使用
collections.Counter - 也可以使用
sorted()进行排序然后看是否相同
检测列表中仅包含一种元素
检查一个列表是否仅包含一种元素,这里使用一点小技巧,也就是计算一个元素出现个数,使用count是否和列表长度相同,如果相同,就说明该列表中所有元素都是一致的。
a = [3, 3, 3,3]
print("All element are duplicate in listOne", a.count(a[0]) == len(a))
b = [3, 3, 3,2]
print("All element are duplicate in listTwo", b.count(b[0]) == len(b))
计算函数耗时
通常我们需要了解一下我们函数所消耗时间,来衡量函数的性能。
import time startTime = time.time()
# 你的代码
endTime = time.time()
totalTime = endTime - startTime
print("Total time required to execute code is= ", totalTime)
解构字典
如果熟悉 js 的 es6 新特性,应该对以下语法不会陌生。解构有点将容器中元素一个一个取出。
networkOne = {1: 'AlexNet', 2: "ResNet", 3:"DenseNet"}
networkTwo= {2: 'ViT', 4: "Transformer"}
networkThird = {**networkOne, **networkTwo}
print(networkThird)
{1: 'AlexNet', 2: 'ViT', 3: 'DenseNet', 4: 'Transformer'}