HackerRank场景下Python多行输入代码解析(新手问询)
HackerRank多行输入代码解析
你遇到的场景是:输入第一行是整数n(表示要读取的数组数量和每个数组的长度),后面跟着n行数组数据。直接用input()只能读取一行,下面逐行解析这段代码的工作原理:
第一行:
n = int(input().strip())input()读取控制台第一行输入内容,strip()去掉内容首尾的空白字符(包括换行、空格、制表符),最后用int()把处理后的字符串转成整数,这个n就是后续要读取的数组行数。第二行:
arr = []
初始化一个空列表,用来存储后续读取的所有数组数据,最终会变成二维列表。循环部分:
for _ in range(n):
这里的_是Python里的占位符变量,因为循环只需要执行n次,不需要用到循环变量的具体值,用_代替是业内约定俗成的写法。循环体:
arr.append(list(map(int, input().rstrip().split())))
这一行可以拆成几步理解:input().rstrip():读取当前循环对应的一行输入,rstrip()只去掉行尾的空白(比如换行符),避免行尾多余空白干扰后续处理;.split():把当前行的字符串按任意空白字符(空格、制表符等)分割,得到一个字符串列表,比如输入"11 2 4"会变成["11", "2", "4"];map(int, ...):把分割后的每个字符串元素转换成整数,map函数会将int函数依次作用到列表的每个元素上,返回一个迭代器;list(...):把map返回的迭代器转换成整数列表,比如["11", "2", "4"]会变成[11, 2, 4];arr.append(...):把这个整数列表添加到arr中,循环执行n次后,arr就会包含所有输入的数组数据。
比如你给的示例输入,执行完这段代码后,arr的值是:
[[11, 2, 4], [4, 5, 6], [10, 8, -12]]
内容的提问来源于stack exchange,提问作者Darcy
相关产品推荐
相关产品推荐

