本篇文章將會(huì)講解Python數(shù)據(jù)結(jié)構(gòu)中的list、tuple站玄、set、dict。
list
list是一種有序集合
操作數(shù)據(jù)
直接添加數(shù)據(jù)
mylist = ['Google', 'Microsoft', 'Apple']
追加元素
mylist.append('Facebook') # ['Google', 'Microsoft', 'Apple', 'Facebook']
指定位置插入元素
mylist.insert(1, 'Orcle') # ['Google', 'Orcle', 'Microsoft', 'Apple', 'Facebook']
刪除元素
# 刪除尾部元素
mylist.pop() # 會(huì)返回被刪除元素
# 刪除指定位置的元素
mylist.pop(1) # 刪除索引為1的元素吨瞎,并返回刪除的元素
替換元素
mylist[0] = 'Facebook'
mylist[1] = ['python', 'java', 'php'] # 集合的數(shù)據(jù)類型可以不同,也可以是集合
排序
mylist = [1, 2, 5, 4]
mylist.sort() # [1, 2 ,4, 5]
如果是字母穆咐,則根據(jù)Ascii碼來排序
獲取長(zhǎng)度
同獲取字符串長(zhǎng)度一樣颤诀,都是使用len()函數(shù)即可字旭。
len(mylist)
獲取數(shù)據(jù)
mylist[0] # 'Google
mylist[-1] # 'Apple'
如果索引超出范圍是,會(huì)拋出異常:IndexError: list index out of range
Tuple
Tuple崖叫,元組遗淳,用法與List類似,但Tuple一經(jīng)初始化心傀,就不能修改屈暗,沒有List中的append(), insert(), pop()等修改的方法
注意點(diǎn)
1. 一個(gè)元素問題
Tuput在定義只有一個(gè)元素的元組時(shí)候,需要在后面加上,
來消除歧義
t = (1,) # 如果需要是Tuple脂男,就必須加上逗號(hào)养叛,否則變成成了數(shù)字1了
# 這里如果沒有“,”就變成了“(1)”
2. 引用類型問題
看一個(gè)例子:
t = (1, [2, 3])
t[1][0] = '2'
輸入后并沒有報(bào)錯(cuò),值也的確修改了宰翅,這是因?yàn)門uple中知識(shí)保存了對(duì)象的引用弃甥,所以這么修改也是合理的,如果不了解引用就去百度看看汁讼。
dict
全稱dictionary淆攻,在Java語言中是Map,使用“鍵-值”對(duì)的形式存儲(chǔ)掉缺。查找速度快卜录。看個(gè)例子:
d = {'Beijing': '010', 'Guangzhou': '020'}
d['Shanghai'] = '021' # 如果不存在就添加眶明,存在就是修改
d['Guangzhou'] # 返回對(duì)應(yīng)鍵的值艰毒,如果不存在就報(bào)錯(cuò)
# 如果需要判斷是否存在某個(gè)key,可以使用如下方法:
'Shenzhen' in d # False
'Guangzhou' in d # True
獲取也可以使用get()方法:
d.get('Beijing') # '010'
d.get('Shenzhen') # None
# 第二個(gè)參數(shù)可以設(shè)置個(gè)默認(rèn)值搜囱,如果不存在就會(huì)返回該默認(rèn)值丑瞧,而不是None
d.get('Shenzhen', '') # ''
set
set的特點(diǎn)是無序、不重復(fù)蜀肘。set就是dict中的key绊汹,不存儲(chǔ)value,
用法
s = set([1, 2, 3]) # {1, 2, 3}
s = set([3, 2, 1]) # {1, 2, 3}
s = set([1, 2, 3, 2, 2, 2]) # {1, 2, 3}
通過返回值可以看出set就是dict中的key
操作
1. 基本操作
s.add(4) # {1, 2, 3, 4}
s.remove(4) # {1, 2, 3}
2. 交集與并集
s1 = set([1, 2, 3])
s2 = set([1, 2, 4])
s1 & s2 # {1, 2}
s1 | s2 # {1, 2, 3, 4}