如何使用Python map()函数将输入数据拆分至独立列表
使用map()函数优化Python输入分组逻辑
问题说明
给定输入格式如下:第一行是整数Q,后续Q行每行包含两个整数L和R。需要将所有L值存入arrL列表,所有R值存入arrR列表。
输入示例
5 3 6 4 4 2 5 6 7 3 7
目标输出列表
arrL = [3,4,2,6,3]
arrR = [6,4,5,7,7]
原有实现(for循环)
目前使用for循环可以实现需求,代码如下:
arrL = [] arrR = [] Q = int(input()) for i in range(Q): l, r = map(int, input().split(' ')) arrL.append(l) arrR.append(r) print(arrL) print(arrR)
使用map()的优化实现
通过map()配合zip()可以更简洁高效地完成分组,代码如下:
Q = int(input()) # 批量处理所有输入行,将每行转换为整数元组 pairs = map(lambda line: tuple(map(int, line.split())), [input() for _ in range(Q)]) # 拆分元组序列为两个独立列表 arrL, arrR = map(list, zip(*pairs)) print(arrL) print(arrR)
代码说明
- 先用列表推导式读取Q行输入,再通过
map()对每行执行转换:将每行字符串按空格拆分后转成整数元组。 - 使用
zip(*pairs)将所有元组的第一个元素、第二个元素分别聚合,再用map(list, ...)把聚合后的元组转成列表,直接得到arrL和arrR。 - 这种写法省去了显式的循环追加操作,代码更紧凑,在处理大量数据时性能表现更优。
内容的提问来源于stack exchange,提问作者MrNiver632
相关产品推荐
相关产品推荐

