我知道我们可以使用类似final_list= list1 + list2
之类的东西来合并两个列表但是如果列表是由python代码生成的,并且它们没有像list1和list2这样的变量关联它们,我们怎么能合并他们?比方说,我的代码执行类似print output
的操作:
[1,2,3,4]
[2,0,5,6]
我想合并它们,这样我就可以使用set(final_list)获取唯一值。但是如何获得final_list?
PS-我的代码可以返回多个列表。它不仅限于两个。
答案 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
返回一个元组,我们可以循环其内容,那些是你想要相互追加的列表。