在python中使用for循环获取输入

在python中使用for循环获取输入,python,Python,有人能解释一下为什么上面的代码不起作用吗 我知道我可以用它来制作一个列表,比如: a,b = int(i) for i in input().split() 但为什么它不适用于2个值?如果出现运行时异常(传递2个以上的值),终止是完全合法的。但是显示的语法无效。我刚刚检查过。这些函数称为生成器函数。代码可以修改为: a = [int(i) for i in input().split()] 另外,a,b=[int(x)for x in input().split()]也执行相同的任务,但它返

有人能解释一下为什么上面的代码不起作用吗

我知道我可以用它来制作一个列表,比如:

a,b = int(i) for i in input().split()

但为什么它不适用于2个值?如果出现运行时异常(传递2个以上的值),终止是完全合法的。但是显示的语法无效。

我刚刚检查过。这些函数称为生成器函数。代码可以修改为:

a = [int(i) for i in input().split()]
另外,
a,b=[int(x)for x in input().split()]
也执行相同的任务,但它返回一个列表。然后迭代该列表,并将其分配给python末尾的变量。(如果我错了,请纠正我)


感谢所有回答的人!:D

我无法回答你的问题,为什么你需要“你需要”以外的括号,但是
a,b=[I for I in[1,2]
会给
a
赋值,给
b赋值
为什么在第一个例子中去掉方括号?我认为
a,b=[int(I)for I in input().split()]
可以满足您的需要。请参阅Hollom,哈哈!这是伟大的伙伴。但是你是从一个列表[1,2]中取值,迭代一个大小为2的列表将其分配给两个值是完全可以解释的。此外,由于列表包含整数值,a和b将变为整数。也许我把问题框错了。这就是循环的本质。(正如我现在读到的)这个循环被称为生成器,用来收集数据。也许它只能以列表的形式生成数据。
a,b = (int(x) for x in input().split())