首页 > 解决方案 > 分配给以 *varname 结尾的以逗号分隔的变量列表如何工作?

问题描述

有人可以向我解释这段代码吗?

a, b, c, d, *e = map(int, input().split())

为什么这行得通,星号运营商在这里的具体作用是什么?

我知道它会列出 d 之后任意长的输入数,但它是如何做到的呢?另外,根据我对 map 函数的一点了解,它需要两个参数:一个函数和一个可迭代对象。然而,到底怎么可能input().split()是可迭代的?在此先感谢并原谅我缺乏知识。

标签: python

解决方案


让我们从内到外...

input().split()将接受键盘输入并返回一个列表,例如:

输入a b c d e f g,结果列表将是['a', 'b', 'c', 'd']

map接受一个函数和一个可迭代对象,并将可迭代对象的每个元素传递给函数,结果返回一个新的可迭代对象。在您的情况下,该函数int应用于键盘输入的每个元素。

a, b, c, d, *e = ....获取从返回的可迭代对象map并将其分配给这些变量。a、b、c 和 d 将是前四个整数,而 e 将是任何剩余的列表。


推荐阅读