튜플

2013-05-02 4 views
0

그래서 목록에서 마지막 값을 교체,이 같은 튜플이 있습니다튜플

a=[(1, 2, 3), (4, 5, 6), (7, 8, 9)] 

을 나는 그래서 내가 할 수있는 (100)와 각 튜플의 마지막 값을 대체 할 :

b=[(t[0],t[1],) + (100,) for t in a] 

그게 나를 준다 :

[(1, 2, 100), (4, 5, 100), (7, 8, 100)]. 

바로 가기는 무엇입니까? 이 튜플은 실제로 50 개의 요소가 있습니다.

답변

10

사용 튜플 슬라이스는 :

[t[:-1] + (100,) for t in a] 

여기에 개별 요소에서 완전히 새로운 튜플을 구축 할 필요가 없습니다.

+0

알고리즘 적으로, 'tuple (chain (islice (t, 0, len (t) -1), (100,)))'은 약간 더 멋지지만 ... 실제로 이것은 훨씬 빠를 가능성이 높습니다. 생각할 것입니다. (+1) – mgilson

+0

@mgilson : 짧은 튜플의 경우 튜플 슬라이스는 파이썬이 캐시 된 튜플 객체를 다시 사용하기 때문에'islice()'보다 훨씬 빠르다. 메모리 할당, 자기야! –