Распаковать список в 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'
на копыта?
3 ответа:
Да, вы можете использовать
*args
(splat) синтаксис:function_that_needs_strings(*my_list)
здесь
my_list
может быть любым итерируемым; Python будет перебирать данный объект и использовать каждый элемент в качестве отдельного аргумента функции.посмотреть вызов выражения документации.
есть также эквивалент ключевого слова-параметра, используя две звезды:
kwargs = {'foo': 'bar', 'spam': 'ham'} f(**kwargs)
и эквивалентный синтаксис для указания аргументов catch-all в a сигнатура функции:
def func(*args, **kw): # args now holds positional arguments, kw keyword arguments
начиная с Python 3.5 вы можете распаковать неограниченное количество
list
s.PEP 448-дополнительные распаковки обобщения
Так что это будет работать:
a = ['1', '2', '3', '4'] b = ['5', '6'] function_that_needs_strings(*a, *b)