列表中的python合并列表

时间:2014-03-17 00:34:42

标签: python string list lambda merge

我在python非常高兴。但是,我试图合并一个数据列表列表或列表与列表中的元素列表。无论如何,本质上它看起来像这样......

示例:

data_list = [“x,cat,x,8,[”10“]”]

我希望它看起来像这样......

data_list = [“x,cat,x,8,10”]

我试图创建一个新的列表和.append()它,但结果似乎没有任何不同。 itertools将每个项目分解为以逗号分隔的字符串。

使用reduce(lambda x,y:x + y,data_list)只删除外括号 因此在打印到shell时看起来像这样:

data_list = x,cat,x,8,[“10”]

有没有办法可以使用lambda删除内括号?或任何给我相同结果的方法?

2 个答案:

答案 0 :(得分:0)

看起来你正试图用列表中的一些元素来展平列表,而某些元素则不是。假设您的嵌套列表只有一个元素,以下是您想要的。

data_list = ["x", "cat", "x", 8, ["10"]]

def Strip(x):
   if isinstance(x, list):
     return x[0]
   return x

newlist = [Strip(x) for x in data_list]

print newlist

这是另一个可能更具可读性的解决方案,它将处理具有多个元素的嵌套列表,但不能处理多个嵌套层。

data_list = ["x", "cat", "x", 8, ["10",10]]

new_list = []
for x in data_list:
  if isinstance(x,list):
    new_list += x
  else:
    new_list.append(x)

print new_list

如果我们假设data_list以包含单个string而不是list对象的列表开头,我们可以在使用上述方法之前将其转换为列表。< / p>

import ast
data_list = ast.literal_eval(data_list[0])

并在完成后将其转换回来:

new_list = [new_list.__str__()]

答案 1 :(得分:0)

使用替换,加入和映射:

print ["".join(map(lambda x: x.replace('[','').replace(']','').replace('"',''), ''.join(data_list).split()))]

输出:

["x,cat,x,8,10"]