tuple
tuple 是包含了一些用分号分隔的資料,例如
d = 11, 22, 'abc', True
d #(11, 22, 'abc', True)
d[1] #22
t = d, (3, 4, 5) # 嵌套群組合
t # ((11, 22, 'abc', True), (3, 4, 5))
t = t, [55, 66, 77] #元組可以包含 list 類型資料
t # (((11, 22, 'abc', True), (3, 4, 5)), [55, 66, 77])
定義包含一個元素的 tuple,元素後必須帶一個逗号:
a = () #定義空 tuple
type(a) # tuple
b = (1,) #定義包含一個元素的 tuple
len(b) #1
type(b) # tuple
c = (11)
c # 11
type(c) # int
d = ('abc')
d = ('abc')
type(d) # str
可以将 tuple 的值開箱付給變量
data = 11, 'abc', True
a,b,c = data
a #11
b #‘abc’
c #True
tuple 是内容不可修改類型,不能修改某個元素的值。是以可以包含多種類型的元素。而 list 是内容可修改類型的,是以一般都包含相同類型的元素。
set
集合類型 set,是沒有重複元素的無序集合。基本用途包括測試是否包含元素和消除重複元素。 集合對象還支援并集、交集、差集和對稱差集等數學運算。
可以使用{} 或者 set() 定義集合 set。隻能通過 set() 建立空集合。
fruits = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
fruits #{'apple', 'banana', 'orange', 'pear'}
len(fruits) # 4
'pear' in fruits # True
str = set("python")
str #{'h', 'n', 'o', 'p', 't', 'y'}
str1 = set("throat")
s - t # {'n', 'p', 'y'} 差集,包含在 s 中,不包含 t
s | t # {'a', 'h', 'n', 'o', 'p', 'r', 't', 'y'} 并集,包含 s 或者包含 t ,或者兩者都包含
s & t # {'h', 'o', 't'} #交集,同時包含在 s 也包含 t
s ^ t # {'a', 'n', 'p', 'r', 'y'} #對稱差集,包含 s 或者 t,但不包含交集部分
set 推導式
與 list 推導式類似,set 也支援推導式:
s = {x for x in 'terminological' if x not in 'game'}
s # {'c', 'i', 'l', 'n', 'o', 'r', 't'}
dictionary
字典 dict 的元素是鍵值對,是可編輯類型。字典由鍵索引,鍵可以是任何不可變類型; 字元串和數字可以作為鍵。 如果 tuple 隻包含字元串、數字或 tuple,則它們可以用作鍵; 如果tuple 直接或間接包含任何可變對象,則不能将其用作鍵。 不能将清單用作鍵,因為可以使用索引配置設定、切片配置設定或 append() 和 extend() 等方法就地修改清單。
字典中鍵是唯一的。
user = {'name':'張三', 'age': 20}
user['addr'] = '人民路' # 添加一個元素
user #{'name': '張三', 'age': 20, 'addr': '人民路'}
user['name'] #'張三'
user['name'] = '李四'
user #{'name': '李四', 'age': 20, 'addr': '人民路'}
del user['addr'] #删除
user #{'name': '李四', 'age': 20}
list(user) #['name', 'age', 'addr']
sorted(user) #['addr', 'age', 'name']
'age' in user #True
可以通過 dict() 構造函數建立字典。
dict([('name': '李四'), ('age': 20), ('addr': '人民路')]) # {'name': '李四', 'age': 20, 'addr': '人民路'}
通過 set 推導式也可以建立字典:
{x: x**2 for x in (2, 4, 6)} # {2: 4, 4: 16, 6: 36}
當鍵是簡單的字元串時,也可以通過簡化的方式的鍵值對定義字典:
dict(name='abc',age=22) #{'name': 'abc', 'age': 22}