2015-03-26 5 views
-3

Я знаю, что мы можем объединить два списка, используя что-то вроде final_list= list1 + list2, но если списки генерируются кодом python и у них нет переменной, связанной с ними, например list1 и list2 , как мы можем объединить их? Скажем, мой код делает что-то вроде print output дать:Слияние двух списков, которые генерируются кодом python

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

Я хотел бы объединить их, так что я могу получить уникальные значения, используя набор (final_list). Но как мне получить final_list?

PS- Мой код может возвращать несколько списков. Это не ограничивается двумя.

+1

Являются ли эти списки генерируемыми функциями? – thefourtheye

+1

хранить их в переменной их .... Если они сгенерированы из функции, используйте возврат в конце функции вместо печати, а затем вы можете сохранить списки – letsc

+0

Если вы «распечатываете» что-то и не сохраняете его в любом месте, он ушел. Если вы хотите работать с ним позже, сохраните его в переменной. – TigerhawkT3

ответ

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] 
+0

Они генерируются в той же функции. – amy

+0

К сожалению, два списка ('a' и' b') сгенерированы той же функцией? Так что функция, которая генерирует случайные списки, возвращает * два * списка, а не только одну? – Zizouz212

+0

@ Zizouz212 Ваш вопрос непонятен. Просьба уточнить, что у вас на самом деле. – Marcin

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) 
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 Так как возвращает кортеж, мы можем перебираем его содержание, тем быть списки, которые вы хотите добавить к друг другу.