Python 3.x 在int()中包装input().split()时获取TypeError

Python 3.x 在int()中包装input().split()时获取TypeError,python-3.x,Python 3.x,所以我只是想知道我所得到的错误的原因和原因,以便更好地理解python 这是我试过的 代码片段#1 x,y=int(input()),int(input()) print(x,y) print(type(x)) print(type(y)) 所以我得到了输出- 4 6 4 6 <class 'int'> <class 'int'> 因此,在这里,在int()内包装input().split()时,它会抛出一个错误,如下所示: TypeError:int()参数必须是字

所以我只是想知道我所得到的错误的原因和原因,以便更好地理解python

这是我试过的

代码片段#1

x,y=int(input()),int(input())
print(x,y)
print(type(x))
print(type(y))
所以我得到了输出-

4
6
4 6
<class 'int'>
<class 'int'>
因此,在这里,在int()内包装input().split()时,它会抛出一个错误,如下所示:

TypeError:int()参数必须是字符串、类似字节的对象或 编号,而不是“列表”

我的怀疑

我只是想知道为什么我不能在input()中包装int()。split()?有没有别的办法?或者如果不允许,请解释原因

来自:

str.split()返回str中单词的列表

您不能将
列表
转换为
int

您可以这样尝试:

(x, y) = (int(x) for x in input().split('-'))
print(x, y)
print(type(x))
print(type(y))

好的,如果您想在一行中获取多个输入,并将其转换为所需的数据类型,可以使用map()来实现

代码片段#3

x,y,z=map(int,input().strip().split())
print(x,y,z)
print(type(x))
print(type(y))
print(type(z))
所以您的输出将如下所示-

2 3 4
2 3 4
<class 'int'>
<class 'int'>
<class 'int'>
2 3 4
2 3 4

正如@dyukha正确指出的,无法将input()包装起来的原因。int()中的split()是因为split()返回一个列表,而我们无法将列表强制转换为int数据类型。

因为split返回一个列表。您不能将列表强制转换为int。您应该使用列表理解或
map
使其工作。@dyukha您是正确的。我刚接触到map的概念,发现了你所说的。你的解决方案也是可以接受的,也是完成工作的另一种方式。感谢你的帮助。
2 3 4
2 3 4
<class 'int'>
<class 'int'>
<class 'int'>