Подтвердить что ты не робот

Распаковать список в Python?

Я думаю, что "распаковка" может быть неправильной лексикой здесь - извинения, потому что я уверен, что это дублированный вопрос.

Мой вопрос довольно прост: в функции, которая ожидает список элементов, как я могу передать элемент списка Python без ошибки?

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

Несомненно, должен существовать способ расширения списка и передать функцию 'red','blue','orange' на копыто?

4b9b3361

Ответ 2

Да, вы можете использовать синтаксис *args (splat):

function_that_needs_strings(*my_list)

где my_list может быть любым итеративным; Python будет перебирать данный объект и использовать каждый элемент в качестве отдельного аргумента функции.

Смотрите документацию по выражению вызова.

Также есть эквивалент ключевого параметра, использующий две звезды:

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

и есть эквивалентный синтаксис для указания универсальных аргументов в сигнатуре функции:

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