Home

Tags

tuple vs list in python

2010-10-10 python list tuple

Кортеж может использоваться в качестве ключа к словарю

t = (1, 2, 3)
d = { t:'hello' }
print d

 {(1, 2, 3): 'hello'}

При изменении кортежа, кортеж создается новый, а лист нет

print '--- tuple ---'
t = (1,2,3)
print id(t)
t += (4,)
print id(t)

print '--- list --- '
l = [1,2,3]
print id(l)
l += [4,]
print id(l)

--- tuple ---
3078091556
3078090796
--- list ---
3077727884
3077727884
идентификатор кортежа сменился

tuple медленнее при добавлении элементов

т.к. создается новый кортеж на каждое добавление
from timeit import Timer
print 'benchmark tuple:', Timer("t += (1,)", "t = ()").timeit(number=50000)
print 'benchmark list:', Timer("l += [1,]", "l = []").timeit(number=50000)

benchmark tuple: 7.17338490486
benchmark list: 0.00926685333252


В общем случае: лист нужен для изменения списков, а кортеж только для чтения, например его можно передавать в ф-ию и не бояться что его изменят.

comments powered by Disqus