OJ中python接收一行多个输入值的非常简单的方式

oj,在线判题系统。经常需要第一排给出稍后的输入测试次数,之后在每行输入多个值给程序。

首先接收指示的输入测试次数没什么问题,主要记录用一行形如下式代码获取一行的多个输入值的方法:

gotinput=list(map(int,input().split()))

就是它了,从此再也不用为接收输入烦恼,安心考虑算法吧。这里稍微记录一下这行代码的原理。

核心:map(function, iterable, ...)函数

首先需要说明,该函数在python2.x和python3.x中返回类型不同,但执行的操作相同,即,将iterable指示的某个序列,挨个进行function的操作。

这里map取“映射”的意思,应该就能记住这个用法了,平时自己写代码也会更方便。

而刚才提到的该函数返回值的不同之处是,python2.x中map函数返回一个列表,而python3.x中则返回一个迭代器。

那个式子也很容易理解了,将input()得到的字符串分割(split()默认以一切空字符为分隔符,包括空格、制表符\t和换行符\n;同时,也默认是全部分割),之后通过map将字符映射为数字,由于我使用python3,所以最后用一个list()将输入结果转换为储存int的列表。

原理更重要,有时候就是需要输入为字符的话不用map也可以。又或者使用python2.x的话就不用转换为list了。

相关推荐