这个系列放一些看神经网络源码过程中的python语法现象
文章目录
- 前言
- 一、list操作:+/+=/extends/append的区别
- 1.引入
- 2.细致
- 场景再现
前言
例如:这个系列放一些看神经网络源码过程中的python语法现象, 直接解析语法太干瘪无聊.希望用这个方式来巩固所学知识
一、list操作:+/+=/extends/append的区别
1.引入
说实话,我之前都没注意过,都是实用主义,够用即可,写python不过一年时间,之前做后端(php)的,回想刚学python的时候,就感觉它太灵活.
相同点:"+"和"extend"都能将两个列表成员拼接到到一起
不同点: + : 生成的是一个新列表(id改变)
extend : 是将一个列表的成员一个个取出添加到原列表中 , 改变的是原列表的值 , id不变.
append:是将对象,直接追加到后面和+,+=,extends解决的问题不同
2.细致
1、+法,只能操作两个类型一致的对象,比如两个列表相加;你整个列表和元祖相加,就报“TypeError”
2、extend方法,传入的参数是iterable,可迭代对象,重点来了:列表、元祖、集合等可迭代的,靠,都可以传!这就有说法了,范围和应用就太广了
3、+=,注意,这是个大坑。因为+=内部通过__iadd__魔法函数实现,而__iadd__内部调用了extend()方法,所以:+=是可以加元祖、集合、可迭代对象的!
# 加元祖
list1 += (22,33,44)
# 加集合
list1 += {55,66,77}
# 加可迭代对象
d = {'a':1, 'b':2}
list1 += d.values()
print(list1)
场景再现
是在看mobilenet网络的时候,看到了这个结构,有人用extend实现,有人用+实现