【发布时间】:2020-11-26 11:12:26
【问题描述】:
下面的代码是做什么的?
a, b = map(int, input().split())
我知道 map 返回一个迭代器,但是我们如何为 a 和 b 分配一个迭代器呢?这像元组赋值吗?
为了理解它,我做了以下操作:
a, b = iter(range(1, 3))
print(a + b)
我知道会发生什么,但我无法完全理解它是如何工作的。谁能解释一下?
【问题讨论】:
-
“这像元组赋值吗?” - 是的,没错,Python 只会尝试遍历右侧的任何内容。 "The object must be an iterable with the same number of items as there are targets in the target list..."
-
这就是生成器的拆包操作——赋值通过从左到右为变量赋值来耗尽生成器。
-
另一个有用的信息是
a, b, *c = map(int, input().split())会将前两个数字解压缩到 a 和 b,并将任何剩余值解压缩到 c 中的列表中 -
@scotty3785 太好了!谢谢。