在Python中连接可变数量的列表

时间:2017-11-02 09:13:34

标签: python list concatenation

我有一些名为: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

关于如何解决这个问题的任何想法?

4 个答案:

答案 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)] ]