给定一个特定的字符串,我的函数需要使用该字符串中的所有字符创建一个列表列表。该函数应该在字符串中看到\n
时开始一个新列表。
示例:build_lst("\n....\n.B.d\n")
应返回此列表列表:[['.','.','.','.'],['.','B','.','d']]
,因为字符串中存在这8个字符。它按字符串中字符出现的顺序创建列表列表,正如我所提到的\n
划分主列表中的多个单独列表。
到目前为止,我的代码很短,但我认为只需几行代码即可完成。不确定我是否在正确的轨道上或者其他策略是否更好
代码:
def build_lst(s):
my_lst = s.split('\n')
[map(int) for x in my_lst]
答案 0 :(得分:1)
我相信你想要的只是:
>>> s = "\n....\n.B.d\n"
>>> list(map(list,s.strip().split('\n')))
[['.', '.', '.', '.'], ['.', 'B', '.', 'd']]
在Python 2中,您可以省略对list
的外部调用,并将其保留在map
,因为map
会像Python 3中那样急切而不是懒惰地进行评估。
答案 1 :(得分:0)
list comprehension是一种不错的,可维护的方式:
[ list(line) for line in s.split('\n') ]
如果在构造输出时应省略空白输入行,请在列表推导中添加条件:
[ list(line) for line in s.split('\n') if line ]
...如果应忽略前导和尾随空格:
[ list(line.strip()) for line in s.split('\n') if line.strip() ]