파이썬으로 목록을 푸는가?


222

여기에 '풀어 넣기'가 잘못된 단어 일 수 있다고 생각합니다.이 질문은 중복 질문이므로 확실합니다.

내 질문은 매우 간단합니다. 항목 목록을 기대하는 함수에서 오류없이 Python 목록 항목을 전달하는 방법은 무엇입니까?

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

분명히 목록을 확장 'red','blue','orange'하고 발굽에 기능 을 전달할 수있는 방법이 있어야 합니까?

답변:



32

예, *args(splat) 구문을 사용할 수 있습니다 .

function_that_needs_strings(*my_list)

my_list반복 가능한 곳 은 어디 입니까? 파이썬은 주어진 객체를 반복하고 각 요소를 함수에 대한 별도의 인수로 사용합니다.

호출 식 설명서를 참조하십시오 .

별표 2 개를 사용하는 키워드 매개 변수도 있습니다.

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

그리고 함수 서명에서 catch-all 인수를 지정하는 동등한 구문 이 있습니다.

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

14

Python 3.5부터 무제한의 압축을 풀 수 있습니다 list s를 .

PEP 448-추가 포장 풀기 일반화

그래서 이것은 작동합니다 :

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

1
파이썬 2.7 또는 3.4로 어떻게 똑같이 할 수 있습니까?
answerSeeker

1
@answerSeeker 비효율적이지만function_that_needs_strings(*(a+b))
azalea
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.