0
我想實現一個功能,它利用int
個tuple
增加最後一個元素,並增加了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)
這可以以更緊湊的方式完成(也許沒有轉換到列表)?
我想實現一個功能,它利用int
個tuple
增加最後一個元素,並增加了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)
這可以以更緊湊的方式完成(也許沒有轉換到列表)?
元組無法在原地進行修改。如果使用tuple
類型,而不是一個可變的序列是非常重要的,那麼,下面的代碼將做你想做的,無須轉換:
def inc(t):
return t[:-1] + (t[-1] + 1,)
注意,它是爲了做到這一點,以創建三個新的元組。我不知道在這方面的開銷會比從list
轉換爲&的開銷小。
做得很好,避免使用列表,並對你的代碼的長處和短處進行很好的評論。 –
我不知道爲什麼這是downvoted,但你必須使用元組呢?他們是,你知道,不變的。 – percusse
@percusse,我有一種感覺,這可以用一個班輪 –
使用可變序列來修改元素 – RomanPerekhrest