2010-08-06 4 views
8

터플이 이 아니기 때문에이 질문은 약간 잘못된 것입니다.입니다. 내가 원하는 것은 :파이썬 : 튜플의 (마지막) 요소를 변경하는 방법?

정확히 a 두 배의 마지막 요소, 말이며, 마지막 인수를 제외하고 a처럼 튜플 b를 얻을 수 튜플 a = (1, 2, 3, 4)을 가졌어요.

=> B == (1, 2, 3, 8)

+3

당신이 그것을 도울 수 있다면, 당신은 요소의 적절한 조작을하려고한다면 목록을 사용하는 것을 고려해보십시오. – user37078

+0

내 시나리오에서 튜플을 사용하는 것이 더 합리적이라고 생각합니다. - 'major.minor.branch.build -> (major, minor, branch, build)' 형태로 프로그램 버전을 표현해야합니다. 주어진 버전에서 '이전 빌드'의 버전을 얻으십시오. –

+0

버전 번호에는'distutils.version.StrictVersion' 클래스를 사용할 수 있습니다. – SiggyF

답변

19
b = a[:-1] + (a[-1]*2,) 

제가 여기하고있어 두 가지 튜플 연결하고, 마지막 요소이지만 제 함유 모든, 새로운 튜플 최종 요소의 돌연변이가 들어 있습니다. 결과는 원하는 것을 포함하는 새로운 튜플입니다.

터플을 반환하는 +의 경우 두 피연산자 모두 튜플이어야합니다. 내가 좋아하는 뭔가를 할 것

+2

'(a [-1] * 2,)'는 어떨까요? 위의 예는 TypeError를 던집니다. (하나의 항목 튜플에 후행 쉼표가 필요합니다.) – Skilldrick

+0

@Skilldrick 감사, 편집 – Ivo

6

:

b=list(a) 
b[-1]*=2 
b=tuple(b) 
+1

+1 : 이것은 읽기 쉽고 유연합니다. – EOL

5

여기에 그 일을하는 한 가지 방법이다 :

>>> a = (1, 2, 3, 4) 
>>> b = a[:-1] + (a[-1]*2,) 
>>> a 
(1, 2, 3, 4) 
>>> b 
(1, 2, 3, 8) 

그래서이 두 번째 줄에 일이? a [: - 1]은 마지막 원소를 제외한 모든 원소를 의미합니다. a [-1]은 마지막 요소이고, 우리는 그것을 두 개 곱합니다. (a [-1] * 2,)는 결과를 튜플로 변환하고, 슬라이스 된 튜플은 + 연산자를 사용하여 결합됩니다. 결과는 b에 기록됩니다.

귀하의 사례에 맞게 조정할 수 있습니다.

관련 문제