Вопрос-Ответ

Pass a list to a function to act as multiple arguments [duplicate]

Передача списка функции в качестве нескольких аргументов

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

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

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

Переведено автоматически
Ответ 1
function_that_needs_strings(*my_list) # works!

Вы можете прочитать все об этом здесь: Распаковка списков аргументов - Учебное пособие по Python

Ответ 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
Ответ 3

Начиная с Python 3.5, вы можете распаковывать неограниченное количество listфайлов.

PEP 448 - Дополнительные обобщения при распаковке

Итак, это сработает:

a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)
python list