有人可以解释以下功能的作用:
list()
map()
split()
在这行代码的上下文中请:
input = list(map(int,input().split()))
最后,应该是:
int,input()
而不是:
int(input())
谢谢!
答案 0 :(得分:2)
所有这些功能都是标准库的成员,并由official documentation覆盖。
话虽如此,我将简要总结一下。
list
将iterable变为列表。在这种情况下,iterable是map
对象。
map
接受一个函数f
(或任何可调用的,真的)和一个可迭代的iter
并生成另一个iterable,其中callable应用于{{{}}中的每个元素1}}。
在您的情况下,callable是iter
,它试图将其参数转换为整数。 int
是将函数应用于元素集合的常用术语,但是' Pythonic'}方法是使用列表理解:
map
[f(x) for x in iterable] == list(map(f, iterable))
是split
对象的一种方法,它在给定分隔符的每次出现时划分给定的字符串,返回一个列表。如果省略separator参数,则默认为空格。
将所有内容放在一起,您将从stdin读取输入,将结果字符串拆分为多个字符串,将str
映射到每个项目(将它们转换为整数,或者在输入上引发异常,如{{ 1}})并将映射转换为列表。
然后通过将结果分配给int
来影响内置内容,这通常是一个坏主意(想象'words instead of numbers'
导致错误时的混淆)。
回答你的第二个问题:不,因为input
有两个不同的论点。
如果我在生产环境中使用它,我会稍微重写一下:
input()
map
的参数是对用户的提示(当然,它是可选的)。
答案 1 :(得分:1)
让我们把它分解
input = list(map(int,input().split()))
map(int, input().split())
调用int()
函数,这些函数为从input().split()
现在map
在Python 2.7中返回一个列表对象,在Python 3中返回一个地图对象。如果你正在运行2.7那么list(..)
就没用了。在3中它是必需的。
关于您的第二个问题,map()
有两个参数,因此需要int, input()
,因为int(input())
被视为单个参数。
input = list(map(int,input().split()))
答案 2 :(得分:1)
input().split()
从用户处获取一行键盘输入并返回单词列表(以空格分隔)。例如,如果用户键入the quick brown fox
,则会返回['the', 'quick', 'brown', 'fox']
。
map()
接受一个函数和一系列值,调用序列中每个值的函数,并返回所有结果的序列。例如,map(int, ['1', '2', '3'])
会返回[1, 2, 3]
。
最后,list()
获取一系列值并将其作为列表返回。
总的来说,您的示例代码行接受来自用户的输入字符串,将其拆分为单词列表,对每个单词调用int()
,并汇总返回值的最终列表。
要回答关于int
的问题,是的,在这种情况下,这是调用它的正确方法。 map()
接受函数 object ;你实际上并没有亲自打电话给int()
。