一次扩展两个列表

时间:2019-06-07 11:03:59

标签: python list

我有两个列表(列表_1,列表_2)和一个返回两个列表(列表_1_f,列表_2_f)的函数,我想将列表_1_f的项目添加到列表_1,将列表_2_f的项目添加到列表_2:

def lists():
    list_1_f = [10,10,10]
    list_2_f = [20,20,20]    
    return list_1_f,list_2_f

list_1, list_2 = [1,1,1], [2,2,2]

我总是会有2个原始列表,而扩展将仅针对另外两个列表进行,没有其他可能性。这样一来,最后我将有两个包含原始项目的列表以及从函数中获得的列表,输出将是:

list_1 = [1,1,1,10,10,10]
list_2 = [2,2,2,20,20,20]

我已经尝试过使用扩展功能执行以下几行,但是没有用:

list_1.extend([]), list_2.extend([]) = lists()
list_1.extend(), list_2.extend() = lists()
list_1.extend, list_2.extend = lists()

我总是可以做到以下几点:

list_1a, list_2a = lists()
list_1.extend(list_1a)
list_2.extend(list_2a)

但是我想知道是否甚至有可能在不创建两个中间列表的情况下进行扩展。

3 个答案:

答案 0 :(得分:4)

要处理多个列表,您应该改用嵌套列表。假设您最初有这个嵌套列表:

l =  [[1,1,1], [2,2,2]]

您可以zip嵌套两个列表,并使用map通过operator.add扩展返回的子列表:

from operator import add

extended_list = *map(add, *zip(l, lists())),
# ([1, 1, 1, 2, 2, 2], [10, 10, 10, 20, 20, 20])

答案 1 :(得分:1)

您可以进行迭代,因此可以执行以下操作:

list_1.extend(lists()[0])
list_2.extend(lists()[1])

这有效,但可读性不强。如果您要列出要附加到list_of_lists=[list_1,list_2]的列表,则可以执行以下操作:

for n in list_of_lists:
  list_of_lists[n].extend(lists()[n])

希望有帮助!

答案 2 :(得分:0)

只需总结一下即可扩展一个列表:

[1,2,3] + [4,5,6]

  

[1, 2, 3, 4, 5, 6]

因此您的代码可能如下所示:

def lists():
    list_1_f = [10,10,10]
    list_2_f = [20,20,20]    
    return list_1_f,list_2_f

list1 = [0]
list2 = [999]

list1 = list1 + lists()[0]
list2 = list2 + lists()[1]

print(list1, list2)
  

[0, 10, 10, 10] [999, 20, 20, 20]