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

Posted 算法与编程之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你不了解的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)

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

结语

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

以上是关于你不了解的Python冷知识序列解包/列表前加星号*list的主要内容,如果未能解决你的问题,请参考以下文章

条件循环及其它语句

Python 中星号作用:解包&打散

MarkDown入门

python 第34课 字典 _ 序列解包用于列表元组字典

python 第34课 字典 _ 序列解包用于列表元组字典

电口模块专题你不知道的电口模块冷知识