tuple vs list in python
2010-10-10
python
list
tuple
Кортеж может использоваться в качестве ключа к словарю
t = (1, 2, 3)
d = { t:'hello' }
print d
При изменении кортежа, кортеж создается новый, а лист нет
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
В общем случае: лист нужен для изменения списков, а кортеж только для чтения, например его можно передавать в ф-ию и не бояться что его изменят.