从字符串构建列表列表

时间:2016-10-31 19:59:59

标签: python string list

给定一个特定的字符串,我的函数需要使用该字符串中的所有字符创建一个列表列表。该函数应该在字符串中看到\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] 

2 个答案:

答案 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() ]