列表中的python合并列表
我对python很在行。但是,我正在尝试合并一个数据列表列表或一个包含列表中元素的列表。总之,本质上看起来是这样的 例如: 数据列表=[“x,cat,x,8,[“10”]] 我希望它看起来像这样 数据列表=[“x,cat,x,8,10”] 我尝试创建一个新列表,并将其.append()添加到该列表中,但结果似乎没有任何不同。itertools将每个项目分解为一个由逗号分隔的字符串 使用reduce(lambda x,y:x+y,data_list)仅删除外括号 所以当打印到外壳上时,它看起来是这样的: 数据列表=x,类别,x,8,[“10”]列表中的python合并列表,python,string,list,lambda,merge,Python,String,List,Lambda,Merge,我对python很在行。但是,我正在尝试合并一个数据列表列表或一个包含列表中元素的列表。总之,本质上看起来是这样的 例如: 数据列表=[“x,cat,x,8,[“10”]] 我希望它看起来像这样 数据列表=[“x,cat,x,8,10”] 我尝试创建一个新列表,并将其.append()添加到该列表中,但结果似乎没有任何不同。itertools将每个项目分解为一个由逗号分隔的字符串 使用reduce(lambda x,y:x+y,data_list)仅删除外括号 所以当打印到外壳上时,它看起来是这
是否有一种方法可以使用lambda移除内部支架?或者任何给我相同结果的方法?看起来您正试图用一些是列表的元素和一些不是列表的元素展平列表。假设嵌套列表只有一个元素,下面的操作就是您想要的
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
如果我们假设数据列表
以包含单个字符串
的列表开始,而不是列表
对象,那么在使用上述方法之前,我们可以先将其转换为列表
import ast
data_list = ast.literal_eval(data_list[0])
完成后将其转换回:
new_list = [new_list.__str__()]
使用替换、连接和映射:
print ["".join(map(lambda x: x.replace('[','').replace(']','').replace('"',''), ''.join(data_list).split()))]
输出:
["x,cat,x,8,10"]
我认为,您必须将数据列表的内容视为字符串而不是列表元素。非常感谢merlin2011和user3!!!!