Descompactar uma lista em Python?


222

Acho que 'descompactar' pode ser o vocabulário errado aqui - desculpe-me por ter certeza de que essa é uma pergunta duplicada.

Minha pergunta é bem simples: em uma função que espera uma lista de itens, como posso passar um item da lista Python sem obter um erro?

my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!

Certamente deve haver uma maneira de expandir a lista e passar a função 'red','blue','orange'no casco?

Respostas:



32

Sim, você pode usar a *argssintaxe (splat):

function_that_needs_strings(*my_list)

onde my_listpode ser iterável; O Python fará um loop sobre o objeto especificado e usará cada elemento como um argumento separado para a função.

Consulte a documentação da expressão de chamada .

Também há um parâmetro de palavra-chave equivalente, usando duas estrelas:

kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)

e existe uma sintaxe equivalente para especificar argumentos gerais em uma assinatura de função:

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.