"""
元组:把多个元素组合在一起就是元组,与列表类似
最常见的元组就是坐标
"""
# 定义元组
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.タプル要素は変更することができない
実際に、我々特にマルチスレッド環境を使用することを好むことがあり、同じオブジェクトは、プロジェクト内にある
ため、オブジェクトの状態の一方(不要な手続きエラーを避けるため、修正することができません
簡単に言えば、維持するために変数ターゲットオブジェクトより定数が容易であり、
一方で、誰のスレッドが同じオブジェクトの内部状態を変更することはできませんので、
あなたが保存することができますので、定数オブジェクトは、自動的にスレッドセーフです同期してオーバーヘッド処理が
一定の目的は、簡単にアクセスを共有することができます)。
結論だから、このです:
要素は、追加、削除、変更する必要がない場合、彼らは、タプルの使用を検討することができます
方法は、タプルが良い選択で使用し、複数の値を返すようにすれば、当然のことながら。