我正在學習python,並且對元組有困惑。如果元組中的元素是不可變的,那我該如何更改一個元組中存在的字典值?爲什麼我們可以更改元組內的字典值?
E.g.
test_dict = {'a':2,'b':3}
test_tup = (test_dict,3)
test_tup[0]['b'] = 4
如果我打印test_tup
,然後b
值更新爲4:提前
>>> test_tup
({'a': 3, 'b': 4}, 3)
感謝。
我正在學習python,並且對元組有困惑。如果元組中的元素是不可變的,那我該如何更改一個元組中存在的字典值?爲什麼我們可以更改元組內的字典值?
E.g.
test_dict = {'a':2,'b':3}
test_tup = (test_dict,3)
test_tup[0]['b'] = 4
如果我打印test_tup
,然後b
值更新爲4:提前
>>> test_tup
({'a': 3, 'b': 4}, 3)
感謝。
請記住,python中的每個值都是對對象的引用。
因此,而不是想着你的元組爲類型的字典的元組,例如,把它當做至出頭,在那些出頭的類型的字典引用的元組。情況並非如此,元組內的。它們自己存在,並且元組的元素參考給他們。
現在,考慮這種方式,元組是不可變的。您無法更改其結構/大小,也無法更改其元素,這意味着您無法用一個參考替換另一個參考。
但是,被引用的對象可以是可變的。無論是否被元組引用,它們都是獨立存在的。
如果元組中的元素是不可變的,那我怎麼能改變它們呢?
它們不是不可變的。元組是。
你的元組只包含對字典的引用,它不能跟蹤你對其中的東西所做的任何修改(它會怎樣?)。
通過更改的,它明白,你不能做到這一點:
test_tup[0] = {}
這是改變基準的元組成立。
這意味着您可以更改字典中某個鍵的值,但不能將字典本身更改爲空字典。 – uniXVanXcel