2013-09-19 1 views
3

В python структура данных list представляет собой последовательность элементов. Аналогичным образом, tuple также является последовательностью элементов, однако кортежи равны immutable.Зачем внедрять две подобные структуры данных, такие как List и Tuple

Какая причина для создания подобной структуры данных, только функция, а не списки, заключается в том, что ее нельзя изменить? Может ли это сохранить пространство памяти, будучи неизменным?

Также, если список и кортеж содержат одни и те же данные, будут ли они использовать то же пространство в памяти?

+0

Связанный: [Python: список против кортежа, когда использовать каждый] (http://stackoverflow.com/questions/1708510/python-list-vs-tuple-when-to-use-each) –

+0

Связанный: [В чем разница между списком и кортежами в Python?] (Http://stackoverflow.com/questions/626759/whats-the-difference-between-list-and-tuples-in-python) –

ответ

5

Неизменяемые типы хешируются и могут использоваться как словарные ключи. Это работает:

key = (1, 2, 3) 
d = {key: 1} 

Но это не делает:

key = [1, 2, 3] 
d = {key: 1} 

Если это так, то, что вы ожидали бы это сделать?

key[0] = 2 
print d[key]  # id(key) hasn't changed, so surely the lookup should still work 
print d[[1, 2, 3]] # but also, we stored a piece of data at [1, 2, 3], didn't we? 
print d[[2, 2, 3]] # but if d[key] works, surely we can expand key to its value 
Смежные вопросы