2014-11-26 2 views
-1

Предположим, у меня есть три списка,Как я могу использовать несколько списков в качестве аргументов в функции и получать их по-разному?

a = [1,2,3] 
b = [2,3,4] 
c = [4,5,6] 

и получить их в функции:

def foo(x,y,z): 
    """I will print or use x,y, and z differently""" 

foo(a,b,c) 

Я пришел, чтобы знать, что я могу передать список, используя (* арг) в Python:

foo(*x) 

Но здесь x распаковывает элементы в каждом списке и сохраняет их в себе.

Я хочу, чтобы моя функция принимала списки отдельно в разных аргументах.

+2

'foo (* x)' вы можете использовать, он будет иметь кортеж списка, вы можете использовать ti оттуда – Hackaholic

+0

Если 'x' is' [1, 2, 3] ',' foo (* x) 'эквивалентно 'foo (1, 2, 3)'. Что вы ожидаете от 'foo (* x, ** y)' эквивалентно? – BrenBarn

+1

И def fn (x, y, z) не работает, потому что? –

ответ

3

вы можете сделать так:

def foo(*x): # x will always will be tuple, whatever you pass 
    """I will print or use x,y, and z differently""" 
    for i in range(len(x)): 
     print(x[i])   # instead of printing, you can assign values 

демо:

>>> foo([1,2,3,4],[5,6,7,8],[3,5,6,3]) 
[1, 2, 3, 4] 
[5, 6, 7, 8] 
[3, 5, 6, 3] 

, если вы не хотите использовать диапазон

>>> def foo(*x): 
...  print(x) 
...  for i in x: 
...   print(i) 
... 

выход:

([1, 2, 3, 4], [5, 6, 7, 8], [3, 5, 6, 3]) # you can see its tuple containing list 
[1, 2, 3, 4] 
[5, 6, 7, 8] 
[3, 5, 6, 3] 
+0

Надеюсь, это помогло вам :) – Hackaholic

+0

Спасибо, это помогает. – ni8mr

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