从列表创建列表列表的Pythonic方法

时间:2014-10-29 15:40:49

标签: python list

我想从列表中创建一个列表列表。

列表如下所示:

level = ['   WWWWWWWWWWWWWWWWW', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C                  E']

我需要创建这个:

[[' ', ' ', ' ', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', 'W', ' ', 'C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'W'], ['C', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', 'E']]

我这样做了:

listofLists = []
for row in level:
  liss = []
  for col in row:
    liss.append(col)
  listofLists.append(liss)

什么是更加pythonic方式或更短的方式?

2 个答案:

答案 0 :(得分:4)

>>> listofLists = map(list,level)

(在python3中,如果你真的需要一个列表,请执行list(map(list, level))

答案 1 :(得分:2)

当您在字符串上调用list()时,将返回其所有字符(包括空格)的列表。

level = ['   WWWWWWWWWWWWWWWWW', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C  W C             W', 'C                  E']
trasnsformed = [list(x) for x in level]