我在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删除内括号?或任何给我相同结果的方法?
答案 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"]