我有一些名为:index_1,index_2,index_3,....,index_n的列表 我想要的是将它们连接在一个新的列表中。
到目前为止我的代码:
index_all=[]
for i in range(1,n+1):
index_all = index_all + globals()["index_"+str(i)]
然而,我收到错误:
KeyError:index_1
关于如何解决这个问题的任何想法?
答案 0 :(得分:1)
你可能想要使用map和filter,以及globals()。items()功能:
concat_list = map ( lambda list_var : list_var[1] , filter ( lambda list_var : list_var[0].startswith("list"), globals().items()))
你的concat_list是所有列表中所有项目的列表
答案 1 :(得分:1)
你可以尝试一下:
list1 = [[1,2,3],[4,5,6],[7,8,9]]
def joinAll(mulist):
index_all=[]
for i in mulist:
for u in i:
index_all.append(u)
return index_all
print joinAll(list1)
答案 2 :(得分:1)
看起来您可能只有一个命名错误,您尝试调用" index _" + str(i)但你的名单被命名为" list _" + str(i)。只要您的列表名为list_1,list_2 ... list_n且没有中断且您的n正确,则以下行应该有效。
index_all = [globals()["list_"+str(i)] for i in range(1, n+1)]
如果您希望列表是平的,可以
[item for sublist in index_all for item in sublist]
如果你可以避免使用globals(),它可能会更容易,因为它可能会很脆弱!
答案 3 :(得分:0)
使用列表解包
cat_list = []
for i in range(1, n+1):
cat_list = [ *cat_list, *globals()['index_'+str(i)] ]