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了。
原文:https://www.cnblogs.com/lingchuL/p/12189885.html