"""
元組:把多個元素組合在一起就是元組,與列表類似
最常見的元組就是座標
"""
# 定義元組
t = ('fqx', '男', 22, True)
print(t) # ('fqx', '男', 22, True)
# 獲取元組中的元素
print(t[0]) # fqx
print(t[3]) # True
# 遍歷元組的值
for i in t:
print(i, end=' ') # fqx 男 22 True
print()
# 重新給元組賦值
# t[0] = '王大錘'
# print(t) # TypeError: 'tuple' object does not support item assignment(元組只能讀,不能寫)
# 真想修改怎麼辦?
t = ('王大錘', '男', 22, True)
print(t) # ('王大錘', '男', 22, True)
# 在這裏變量t重新引用了新的元組原來元組將被垃圾回收
# 將元組轉換爲列表
person = list(t)
print(person) # ['王大錘', '男', 22, True]
# 列表可以修改元素的
person[0] = '王小錘子'
print(person) # ['王小錘子', '男', 22, True]
# 將列表轉換爲元組
fruits_list = ['apple', 'banana', 'orange']
fruits_tuple = tuple(fruits_list)
print(fruits_tuple) # ('apple', 'banana', 'orange')
# 比較列表和元組所佔內存
import sys
print(sys.getsizeof(fruits_list)) # 80
print(sys.getsizeof(fruits_tuple)) # 64
爲什麼要使用元組?
1.元組在創建時間和佔用的空間上面都優於列表。
我們可以使用sys模塊的getsizeof函數來檢查:
存儲同樣的元素的元組和列表各自佔用了多少內存空間
2.元組中的元素是無法修改的
事實上我們在項目中尤其是多線程環境中可能更喜歡使用的是那些不變對象
(一方面因爲對象狀態不能修改,可以避免不必要的程序錯誤,
簡單的說就是一個不變的對象要比可變的對象更加容易維護;
另一方面因爲沒有任何一個線程能夠修改不變對象的內部狀態,
一個不變對象自動就是線程安全的,這樣就可以省掉處理同步化的開銷。
一個不變對象可以方便的被共享訪問)。
所以結論就是:
如果不需要對元素進行添加、刪除、修改的時候,可以考慮使用元組,
當然如果一個方法要返回多個值,使用元組也是不錯的選擇。