能否用函数式编程将指定Python3代码改写为单行?
用函数式风格改写为单行Python代码
当然没问题!这段代码的核心逻辑是读取height行输入,每行将width个字符(0或.)转换成布尔值列表('0'对应True,.对应False),最终生成二维网格。借助Python的列表推导式(这是Python中函数式编程风格的常用实现方式),完全可以把它压缩成一行,而且逻辑和原代码完全一致:
grid = [[c == '0' for c in input()] for _ in range(height)]
拆解说明:
- 外层列表推导式
[... for _ in range(height)]:循环height次,每次处理一行输入,对应原代码的外层for i in range(height)循环。 - 内层列表推导式
[c == '0' for c in input()]:读取一行输入后,遍历每个字符c,判断是否等于'0'并生成布尔值列表,对应原代码中构建row的内层循环。
如果想更贴近传统函数式编程的写法(用map函数),也可以这样实现:
grid = [list(map(lambda c: c == '0', input())) for _ in range(height)]
不过前者的列表推导式在Python社区中通常更易读,也是更被推荐的写法。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

