어떻게 풀 튜플 길이가 n 을 m&lt, n 변수

내가 할 수 있는 파이썬 3 다음 (참조 PEP3132 의 확장됨 이트레이블 꺼내기):

a, *b = (1, 2, 3)
# a = 1; b = (2, 3)

What can I do) 을 달성할 수 있는 것과 마찬가지로 우아한 파이썬 2.x?

  • 내가 잘 알고 있지만, 각 요소를 사용할 수 있는 방법이 있으면 pythonic 액세스 및 분할 작업을 더 궁금하다. 지금까지 내 코드:
a, b = (1, 2, 3)[0], (1, 2, 3)[1:]
# a = 1; b = (2, 3)
질문에 대한 의견 (4)
해결책

난 몇 가지 예를 들면 PEP3132 에 대해 관련 있다는 것을 밝혀냈다 파이썬 2.x 잘 알려져 있다.

&gt. 많은 경우, 최초의 알고리즘은 분할 시퀀스일 받을시간은 &quot, rest&quot. 페어당:

&gt. 첫째, 미삭 = 시퀀스 [0], 시퀀스 [1:]

&gt. [.]

&gt. 또한 오른쪽 값이 없는 경우, 하지만 한 이트레이블 바뀌엇어요 변환되도록 발견되기 전까지 바뀌엇어요 분할 할 수 있다. 이 제품을 만들지 않도록 수단으로 이 임시 목록

&gt. it = 국제열핵융합실험로 (seq.) &gt. 첫 번째 = 아그네스트 () &gt. 미삭 = 목록 (it)

  • 다른 어떤 주어진 이 질문에 대한:
  • 함수 인수 목록 꺼내기 외곽진입 *

추가로 필요한 함수 정의 / 문의:

def unpack(first, *rest): 
  return first, rest
first, rest = unpack( *seq )

왜 그랬을까 구현되는 것이 아니라 일반 튜플 압축 풀기 위한 열거합니다 압축 해제 기능을 인수.

  • 발생기입니다 외곽진입 *

크레딧. 사용자 정의 함수 구축현 있어야 합니다. 이에 대해 좀 더 유연한 com/go/4e6b330a_kr first 수가 있다.

def unpack_nfirst(seq, nfirst):
  it = iter(seq)
  for x in xrange(nfirst):
    yield next(it, None)
  yield tuple(it)
first, rest = unpack_nfirst(seq, 1)
  • 아마도 가장 위에 언급된 수준들과 PEP 포지셔닝합니다 파이썬, 그런 것 같아요?
해설 (3)

난 과민반을을 내린 것으로 알고 있지만 잘못됐다

a, *b = (1, 2, 3)

이제 막 통사 설탕 튜플에 대한 분할 및 인덱스화를. 내가 아니라 매우 효율적인 명시성.

해설 (4)

39, ve i& 맡을게 핸디 리틀이에요 기능:

def just(n, seq):
    it = iter(seq)
    for _ in range(n - 1):
        yield next(it, None)
    yield tuple(it)

예를 들면 다음과 같습니다.

a, b, c = just(3, range(5))
print a, b, c
## 0 1 (2, 3, 4)

또한 적은. 작동됨 인수만:

a, b, c = just(3, ['X', 'Y'])
print a, b, c
## X Y ()

셀명 대한 응답으로 정의할 수도 있습니다.

def take2(a, *rest): return a, rest
def take3(a, b, *rest): return a, b, rest
def take4(a, b, c, *rest): return a, b, rest
... etc

그리고 이를 사용하여 다음과 같습니다.

p = (1,2,3)
a, b = take2(*p)
print a, b
## 1 (2, 3)
해설 (5)

내가 don& # 39, 더 나은 방법이 있을 것 같지는 않다 그런데 여기서 '이 아닌' 은 대체 너회가 게시하기를 사용하여 국제열핵융합실험로

>>> x = (1,2,3)
>>> i = iter(x)
>>> a,b = next(i), tuple(i)
>>> a
1
>>> b
(2, 3)
해설 (0)

대해 확신하지 못하고 있지만, (0) 컨텍스트로 스포프 어때?

예를 들어, 내가 보고 있다고 할 수 있는 튜플에 신앙이니라 운영까지도 하려면, 어떤 종류의 약간만이라도 열거합니다 더 적합한 생각한다? (없으면 일부 그럴 만한 이유가 될 수 있는 그 불변 주어지지 질문이예요)

b = [1,2,3]
a = b.pop(0)
해설 (0)