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

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

169 голосов
/ 13 августа 2010

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

Мой вопрос довольно прост: в функции, которая ожидает список элементов,можно передать элемент списка 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 ]

221 голосов
/ 13 августа 2010
function_that_needs_strings(*my_list) # works!

Вы можете прочитать об этом здесь.

24 голосов
/ 17 декабря 2013

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

function_that_needs_strings(*my_list)

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

См. Документацию к выражению вызова 1009 *.

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

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

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

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments
9 голосов
/ 04 сентября 2016

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

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

Так что это будет работать:

a = ['1', '2', '3', '4']
b = ['5', '6']
function_that_needs_strings(*a, *b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...