python - 分配给以 *varname 结尾的以逗号分隔的变量列表如何工作?
问题描述
有人可以向我解释这段代码吗?
a, b, c, d, *e = map(int, input().split())
为什么这行得通,星号运营商在这里的具体作用是什么?
我知道它会列出 d 之后任意长的输入数,但它是如何做到的呢?另外,根据我对 map 函数的一点了解,它需要两个参数:一个函数和一个可迭代对象。然而,到底怎么可能input().split()
是可迭代的?在此先感谢并原谅我缺乏知识。
解决方案
让我们从内到外...
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 将是任何剩余的列表。
推荐阅读
- r - 根据词典计算文本中的单词
- r - 如何使用 kable 将表格调整为 pdf 页面?
- node.js - 尝试渲染 React SSR 时,我的 Express 应用程序中缺少什么?
- visual-studio - 错误:修改我的 Fortran 代码后的文件结尾
- php - 在 Twitter 上突出显示用户喜欢的帖子
- android - 选择后单选按钮自动取消选择
- powershell - Get-ChildItem Where-Object -notlike $array - 有没有办法做到这一点?
- c# - Electron 软件包 dll 和配置
- azure - 如何将 Ionic 3 (Angular 5) 应用程序连接到 Azure SQL 数据库?
- redis - Redis - 获取集群中的总数据集大小