【你不了解的Python冷知识】序列解包/列表前加星号*list

网友投稿 907 2022-10-25

【你不了解的Python冷知识】序列解包/列表前加星号*list

【你不了解的Python冷知识】序列解包/列表前加星号*list

问题

如下所示,两种方式的区别是什么?

a = [1,3,5,7]print(a)print(*a)

方法

首先,来看各自的输出结果:

[1, 3, 5, 7]1 3 5 7

其次,二者的输出是有着本质的区别,前者输出的是一个列表,而后者输出的是列表中的一个个元素。

那么,序列解包有什么作用呢?

应用

下面来看一个2个整数加法的案例,如下所示:

# 定义一个两个整数的加法def add(a, b): return a+b# 假设2个整数都保存在列表中c = [1, 2]# 如果直接将列表传给add函数,会报类型不匹配错误,此时咋办呢?# add(c)# 可以借助序列解包来实现d = add(*c)print(d)

在PyTorch自定义模型中的应用:

# define an empty container for Linear operations classifier = [] classifier.append(nn.Linear(in_features=512*7*7, out_features=512)) classifier.append(nn.BatchNorm1d(512)) classifier.append(nn.Linear(in_features=512, out_features=self.num_classes)) # add classifier into class property self.classifier = nn.Sequential(*classifier)

此处,如果直接传递列表,则程序会报错。

结语

序列解包功能十分强大,应用极其广泛。如果对其不了解,初看一下,还真的会一脸懵逼。希望本文的案例学习对您有所帮助!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:人与车碰撞的速度模型推导
下一篇:使用纯C/C++编写的ShellCode生成框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~