2016-11-20 44 views
0

我想實現一個功能,它利用inttuple增加最後一個元素,並增加了1的最後一個元素:在一個元組

inc((0,0,0,1))==(0,0,0,2) 
inc((1,2,3))==(1,2,4) 

這是我想出了:

def inc(t): 
    l=list(t) 
    l[-1]+=1 
    return tuple(l) 

這可以以更緊湊的方式完成(也許沒有轉換到列表)?

+3

我不知道爲什麼這是downvoted,但你必須使用元組呢?他們是,你知道,不變的。 – percusse

+0

@percusse,我有一種感覺,這可以用一個班輪 –

+1

使用可變序列來修改元素 – RomanPerekhrest

回答

2

元組無法在原地進行修改。如果使用tuple類型,而不是一個可變的序列是非常重要的,那麼,下面的代碼將做你想做的,無須轉換:

def inc(t): 
    return t[:-1] + (t[-1] + 1,) 

注意,它是爲了做到這一點,以創建三個新的元組。我不知道在這方面的開銷會比從list轉換爲&的開銷小。

+0

做得很好,避免使用列表,並對你的代碼的長處和短處進行很好的評論。 –