2014-12-03 4 views
3

파이썬에서 함수가 여러 값을 반환 할 수 있음을 알고 있습니다. 내가하고 싶은 것은 별도의 반환 값으로 목록의 각 요소를 반환하는 것입니다. 이것은 사용자 입력에 따라 임의의 수의 요소가 될 수 있습니다. 그렇게 할 파이썬 방법이 있는지 궁금합니다.목록에서 모든 요소 반환하기 (Python)

예를 들어, 항목 쌍을 배열로 반환하는 함수가 있습니다 (예 : [a, b]).

그러나 주어진 입력에 따라이 함수는 여러 쌍을 생성 할 수 있으며 결과는 [[a, b], [c, d], [e, f]]입니다. 대신, 나는 그것을 돌려주고 싶다. [a, b], [c, d], [e, f]

현재로서는, 나는 일시적인 변수와 카운트가 많은 매우 외설스러운 기능을 구현했으며 더 깨끗한 제안을 찾고있다.

감사합니다.

+1

파이썬 함수가 둘 이상의 값을 반환 할 수 있다고 말하는 것은 사실이 아닙니다. 이러한 함수는 실제로 튜플을 반환하며 할당시 언팩됩니다. 그래서 당신은 단순히'tuple()'을 사용하여리스트를 튜플로 변환 할 수 있습니다. 당신이 의미하는 바가 있다면, 여러 번 호출 할 때마다 한 번에 하나씩 돌려주고 싶다는 것입니다. 그렇다면 당신은 '수율'을 사용하고 발전기를 만들고 있습니다. –

+1

튜플은 '다중 값 반환'과 관련하여 단지 표준 일뿐입니다. 행복하게 목록을 반환하고 튜플처럼 압축을 풀 수 있습니다. –

답변

4

이 용도와 완벽하게 일치하는 yield 문이 있습니다.

def foo(a): 
    for b in a: 
     yield b 

이것은 반복 할 수있는 생성기를 반환합니다.

print [b for b in foo([[a, b], [c, d], [e, f]]) 
+0

그가 물었던 것이 아니라 그가 정말로 원했던 것. –

+0

@LeeDanielCrocker Btw. 그녀는 그녀 야. :) – wenzul

0

그러나 입력 부여에 따라, 함수 복귀 기능을 초래할 것이다 여러 쌍, [A, B], [C, D]를 [즉, (F)]를 생성 할 수있다.

반환 된 목록 (예 : [[a, b], [,])을 사용할 수 있습니까? [c, d], [e, f]]) 그 요소를 추출 하시겠습니까? 임의의 수/여러 값에 대한 기준을 충족하는 것으로 보입니다.

+0

'tuple()'을 사용하여 목록을 튜플로 변환 할 수 있습니다. 파이썬 다중 값 함수는 실제로 튜플을 반환하며, 할당시 자동으로 풀립니다. –

+0

호출자 메서드의 기능을 기반으로 이와 비슷한 작업을 수행했습니다. 그러나 @wenzul 제안은 더 파이썬적일 가능성이 높으며, 좀 더 간결한'yield '를 사용하기 위해 다시 작성할 수도 있습니다. 고마워요! – luisamaria

2

는 파이썬 함수를 실행하면 :

return a, b, c 

은 무엇 실제로 반환하는 튜플 (a, b, c), 당신이 말할 수 있도록 튜플은 할당에 압축을 푼 다음과 같습니다

x, y, z = f() 

모두 잘있다.

return tuple(mylist) 

및 예상처럼 행동 : 예상대로

num1, str1, lst1, num2 = f() 

가 할당을 할 것입니다 당신이

mylist = [4, "g", [1, 7], 9] 

귀하의 기능을 간단하게 할 수있는 목록을가한다면.

당신이 정말이 원하는 것은 당신이 반복 할 수있는 순서로 가지 불확실한 수를 반환하는 함수의 경우, 당신은 그것을 yield를 사용하여 발전기를 만들고 싶어 하겠지만, 그 다른 볼의 밀랍.

관련 문제