2015-05-24 2 views
-2

Как вернуть кортеж values1, values2..etc Один за другимКак возвращать значения кортежей из списка

def data(): 
    List = [(1,"xyz",1.2), (1,"sgz",1.2), ...] 
    return (1,"xyz",1.2), (1,"sgz",1.2), ... 
+0

'return' будет возвращать' (1, "xyz", 1.2), (1, "sgz", 1.2) 'как объект последовательности, который будет последовательно (один за другим). –

+0

return должен быть порядковый порядок кортежей – Kumar

+1

'return tuple (your_list)'. – sobolevn

ответ

0

до сих пор не могу понять, почему вы хотели бы сделать это. Но если вы хотите назначить переменные для каждого кортежа в списке, вы можете сделать следующее (учитывая, что вы знаете, сколько элементов в списке есть):

>>> def data(): 
     List = [(1,"xyz",1.2), (1,"sgz",1.2), ...] 
     return List 

>>> a, b, c = data() 
>>> a 
(1,"xyz",1.2) 
>>> b 
(1,"sgz",1.2) 
+0

Это не то, о чем ОП спрашивает, не говоря уже о том, что для больших 'data()' это решение не будет практичным вообще. – Algo

1

Использование yield вместо return, как это:

>>> def data(): 
...  for i in [(1,"xyz",1.2), (1,"sgz",1.2)]: 
...   yield i 
... 
>>> for x in data(): 
... print(x) 
... 
(1, 'xyz', 1.2) 
(1, 'sgz', 1.2) 

Сейчас data() работает точно так же, как и список - каждый раз, когда вы вызываете data(), будет возвращен следующий элемент из списка.

+0

Если 'print'ing является решением, зачем использовать генератор? Вы всегда можете сделать 'for i в List: print i' в функции' data() 'вместо' return'ing. – xyres

Смежные вопросы