Python 有效地将n个列表扩展到一起

Python 有效地将n个列表扩展到一起,python,list,extend,Python,List,Extend,假设您有无限多个python列表 如何在不手动写出extend函数的情况下有效地将它们一起扩展 比如说, l1 = [1, 2, 3, ..., n] l2 = [1, 2, 3, ..., n] . . . ln = [1, 2, 3, ..., n] # Not this l1.extend(l2) l1.extend(l3) . . . l1.extend(ln) 谢谢 你可以把它们加在一起[1,2,3]+[3,4,5],这是另一种方法 如果你有一堆变量,比如l1、l2、l3、l4、l

假设您有无限多个python列表

如何在不手动写出extend函数的情况下有效地将它们一起扩展

比如说,

l1 = [1, 2, 3, ..., n]
l2 = [1, 2, 3, ..., n]
.
.
.
ln = [1, 2, 3, ..., n]

# Not this
l1.extend(l2)
l1.extend(l3)
.
.
.
l1.extend(ln)

谢谢

你可以把它们加在一起[1,2,3]+[3,4,5],这是另一种方法

如果你有一堆变量,比如l1、l2、l3、l4、l5,你可以这样做:

for x in range (1,5): 
   new_list = new_list + eval('l' + str(x)) 
这会将未分组为列表的列表添加到一起

下面是一个可以处理不一致格式且无错误的方法:

l1=[1,3]
l2=[4,5]
l3=[5,6]
n1=[2,3]
n5=[4,7]


new_list=[]
letters = ['l','n']
for items in letters:
    for x in range(0,6):
       try:
          new_list = new_list + eval(items + str(x))
       except: 
           continue

更新

 y = ['l{}'.format(y) for y in range(0,100)] # to get all 100 list, l1,l2,l3...l100
 [l1.extend(eval(x)) for x in y]

您需要一些东西来生成无限系列的列表,例如:

def feeder(n):
    while True:
        yield[x for x in range(n)]
然后是一个将一个链接到下一个的函数:

def extender(n):
    a = feeder(n)
    ln = []
    while True:
        ln += next(a)
然后,
>>扩展器(100)
相当快地填满内存。
[根据问题编辑更改列表]

您需要
l1+l2+l3+…ln
是的,但是假设每个列表都已单独定义,您如何获取每个列表?您不会明确定义所有列表。您可以将所有列表放在另一个列表中。@尼尔您要查找的内容不清楚几乎有100个单独定义的列表,即l1、l2、l3,不在一个列表中。希望这是有意义的。是的,但是假设每个列表都是单独定义的,那么如何抓住它们呢?更新了关于如何做到这一点的信息。只要有一个好的命名约定,您就可以使用eval和a来表示感谢,这似乎很接近。但命名约定并不一致……你们有什么不同?你可以使用try:except:对于那些奇怪的情况,你有l1-l10,然后是n1-20,所以当它没有找到l11时,它仍然有效。这有意义吗?我更新了如何处理不一致的数据,也许这会有所帮助?谢谢,我有近100个单独定义的列表。我不认为单独将它们放在列表y中是有效的。谢谢。与SuppressionLayer解决方案类似,它考虑了变量名称的变化。很接近,但还没有快乐。谢谢,这可以奏效。在不手动输入的情况下,如何链接每个列表项?请尝试搜索该问题,或者问一个新问题,我猜这是一个不同的问题,谢谢。您能否澄清扩展器的角色?原因是因为我看不到它会返回某种结果?正如书面所写,没有任何东西会返回;行
a=feeder(n)
创建一个生成器,该生成器无限期地生成长度为n的列表。如果您想要一个包含100个列表的列表,那么将
替换为
,而True:
替换为范围(100)
中x的
,然后让函数中的最后一行为
返回ln
def feeder(n):
    while True:
        yield[x for x in range(n)]
def extender(n):
    a = feeder(n)
    ln = []
    while True:
        ln += next(a)