合并由python代码生成的两个列表

时间:2015-03-26 00:13:11

标签: python list merge set

我知道我们可以使用类似final_list= list1 + list2之类的东西来合并两个列表但是如果列表是由python代码生成的,并且它们没有像list1和list2这样的变量关联它们,我们怎么能合并他们?比方说,我的代码执行类似print output的操作:

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

我想合并它们,这样我就可以使用set(final_list)获取唯一值。但是如何获得final_list?

PS-我的代码可以返回多个列表。它不仅限于两个。

4 个答案:

答案 0 :(得分:1)

为函数指定变量。将列表生成函数,将它们连接在另一个变量中。只需确保您的函数返回生成的列表,而不是仅将其打印出来。

# my_list_generator returns two values.

>>> a, b = my_list_generator()
>>> a
[1, 2, 3, 4]
>>> b
[2, 0, 5, 6]
>>> final_list = a + b
>>> final_list
[1, 2, 3, 4, 2, 0, 5, 6]

将所有这些交叉出来!既然我知道函数可以返回多个对象,那么就这样做(用一点列表理解):

lists = [i for i in my_list_generator()]
# lists might look like [[1, 2, 3, 4], [2, 0, 5, 6]]
# And now use a for loop to get each value

final_list = []
for sublist in lists:
    final_list.extend(sublist)
# final_list will look like [1,2,3,4,2,0,5,6]

此外,如果您不想复制,只需再做一件事:

real_final_list = [i for i in final_list if i not in real_final_list]

答案 1 :(得分:1)

def somefunc(param):
    #does something
    return alist,blist

my_alist,my_blist = somefunc(myparam)
print my_alist, my_blist
#prints both lists.

当您从函数返回多个值时,它们将在元组中返回。你可以轻松解开元组

答案 2 :(得分:1)

您可以修改生成输出的函数,也可以更难以手动将其转换为字符串然后转换为集合。

list = []
strings_of_list = output.split('\n')
for string in strings_of_list:
    values = string[1:-1].split(',')
    for val in values:
        list+=[int(val)]    
set(list)

答案 3 :(得分:1)

如果我理解正确: 你有一个函数(我们现在称它为listGen()),它返回一些列表。现在,您希望将这些列表放在一个大的列表中final_list

您可以执行以下操作:

# listGen defined earlier

final_list = []
for i in listGen():
    final_list += i

unique_values = set(final_list) # or whatever you wanted to do with it

由于listGen返回一个元组,我们可以循环其内容,那些是你想要相互追加的列表。