在Python中串联可变数量的列表

在Python中串联可变数量的列表,python,list,concatenation,Python,List,Concatenation,我有很多列表,叫做:索引1,索引2,索引3,…,索引n. 我想要的是将它们连接到一个新列表中 到目前为止,我的代码是: index_all=[] for i in range(1,n+1): index_all = index_all + globals()["index_"+str(i)] 但是,我得到一个错误: KeyError:索引_1 关于如何解决这个问题,您有什么想法吗?您可能需要使用映射和过滤器,以及globals().items()功能: 您的concat_列表是所

我有很多列表,叫做:索引1,索引2,索引3,…,索引n.
我想要的是将它们连接到一个新列表中

到目前为止,我的代码是:

index_all=[]
for i in range(1,n+1):
    index_all = index_all + globals()["index_"+str(i)]   
但是,我得到一个错误:

KeyError:索引_1


关于如何解决这个问题,您有什么想法吗?

您可能需要使用映射和过滤器,以及globals().items()功能:


您的concat_列表是所有列表中所有项目的列表

您可以尝试以下方法:

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)

看起来您可能只是有一个命名错误,您尝试调用“index_uu”+str(i),但您的列表名为“list_uu”+str(i)。只要您的列表名为list_1、list_2,以下行就可以工作。。。列出没有中断的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(),可能会更容易,因为它可能很脆弱

使用列表解包

cat_list = []
for i in range(1, n+1):
    cat_list = [ *cat_list, *globals()['index_'+str(i)] ]

这意味着全局变量中没有名为index_1的变量。。。应该有一个吗?是的,我认为应该有一个,对吗?最佳测试:尝试通过python控制台访问
globals()[“index_1”]
,请制作一个完整的代码示例,因为似乎缺少一些东西。你说你有列表,但是我在你的代码里没有看到。此外,
index\u all
代表什么也不明显。如果您只想连接列表,为什么需要列表中的任何索引?这是你想要附加其他列表所有内容的列表吗?它应该是
globals()[“list_u”+str(i)]
?这仍然意味着我想对我的列表进行排序,比如:
all_ulist=[]对于范围(1,n+1)内的i:all_ulist.append(index_i)
,但这会导致同样的问题,我如何排列这些索引列表?您可能想使用扩展并将这些列表附加到一个列表中,然后执行我的解决方案,我也不想,但我希望可以有一些。像这样使用扩展所有列表。扩展((列表1,列表2,列表3))然后执行我的解决方案,但这与上面的解决方案几乎相同,对吗?我的意思是它假定我手动输入我的列表。如果他们是3岁,我会工作得很好,但如果他们是100岁,我会怎么样?手动连接list_1,list_2,…,list_100不是一个好主意。看起来我必须在函数joinAll中手动输入list1,list2,list3。假设我有100个列表:从列表1到列表100,这显然是不起作用的。@lmm因为
index\u all
在函数之外,我认为返回它是没有用的。同时使用
list.extend(另一个列表)
可以摆脱嵌套循环。不,只是问题中的一个输入错误,对不起,我的错了。变量的名称实际上是index_1、index_2、index_3,我已经尝试过你的建议,创建一个新的列表将元素解包是行不通的,每次列表的数量和列表中元素的数量都非常糟糕。使用
cat_list.extend(globals()['index_'+str(I)])
cat_list+=globals()['index_'+str(i)]
cat_list = []
for i in range(1, n+1):
    cat_list = [ *cat_list, *globals()['index_'+str(i)] ]