1.list:一種有序的集合,可以随時添加和删除其中的元素
用 [ ] 把list所有元素括起來,就是list對象。
list中包含的元素可以不是同一種類型,也可以一個元素都沒有。
例:
classmates = ['Michael', 'Bob', 'Tracy']
L = ['Michael', , True]
empty_list = []
1.1通路list:通過索引擷取list中的指定元素
注意:索引從0開始,即第一個元素的索引是0.且索引不要越界,越界會報錯。
例:
L = ['Adam', 'Lisa', 'Bart']
print L[0]
Adam
print L[1]
Lisa
print L[3]
Traceback (most recent call last):
File "<stdin>", line , in <module>
IndexError: list index out of range
1.2倒序通路list
例:
L = ['Adam', 'Lisa', 'Bart']
print L[-2]
Lisa
print L[-3]
Adam
print L[-4]
Traceback (most recent call last):
File "<stdin>", line , in <module>
IndexError: list index out of range
1.3添加新元素
方法一:用list的apped()方法,将最新元素添加至末尾。
例:
L = ['Adam', 'Lisa', 'Bart']
L.append('Paul')
print L
['Adam', 'Lisa', 'Bart', 'Paul']
方法二:用list的insert(索引号,新元素)方法,指定添加到位置上。
例:
L = ['Adam', 'Lisa', 'Bart']
L.insert(, 'Paul')
print L
['Paul', 'Adam', 'Lisa', 'Bart']
1.4删除元素
用list的pop()方法,總是删除最後一個元素,且傳回該元素。也可通過pop(索引号)來指定删除
例:
L = ['Adam', 'Lisa', 'Bart', 'Paul']
L.pop()
'Paul'
L = ['Adam', 'Lisa', 'Paul', 'Bart']
L.pop()
'Paul'
1.5替換元素
對list中的某個索引指派,可直接替換原來的元素
例:
L = ['Adam', 'Lisa', 'Bart']
L[] = 'Paul'
print L
L = ['Adam', 'Lisa', 'Paul']
2.tuple:一種有序清單,一旦建立,就不能修改。
例:
t = ('Adam', 'Lisa', 'Bart')
擷取tuple元素的方式和list一樣。
2.1建立單元素tuple
例:
t = (1,) #防止和t=(1)混淆
print t
(1,)
t = () #空tuple
print t
()
2.2’可變的‘tuple
例:
t = ('a', 'b', ['A', 'B'])
L = t[2]#擷取tuple的第三個元素
L[0] = 'X' #修改list的元素
L[1] = 'Y'
print t
('a', 'b', ['X', 'Y'])
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX9UkeOBzYq1kMNR1T1cWbhZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39TO4UDM1ADMyEjNwMDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
總結:tuple中的’不變‘是說,tuple的每個元素指向永遠不變,如指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的。
3.dict:以key:value的格式存儲,dict也是集合
例:
d = {
'Adam': ,
'Lisa': ,
'Bart':
}
len(d) #使用len()函數計算集合的大小
3.1通路dict
方法一:dict可以使用key來查找對應的value
例:
d = {
'Adam': ,
'Lisa': ,
'Bart':
}
print d['Adam']
print d['Paul'] #注意:key不存在時,會報錯
Traceback (most recent call last):
File "index.py", line , in <module>
print d['Paul']
KeyError: 'Paul'
為了避免key不存在時報錯,則使用if判斷如下:
if 'Paul' in d:
print d['Paul']
方法二:使用dict的get方法,當key不存在時,傳回none
d = {
'Adam': ,
'Lisa': ,
'Bart':
}
print d.get('Bart')
print d.get('Paul')
None
3.2dict的特點:
1.查找速度快,與dict中的元素無關,無論多少,查找速度都一樣。
2.占用記憶體大,會浪費很多内容
3.dict是按照key查找的,在一個dict中,key不能重複
4.存儲的key-value序對是無序的
5.作為key的元素必須是不可變的,value無所謂
例:
{
'123': [, , ], # key 是 str,value是list
: '123', # key 是 int,value 是 str
('a', 'b'): True # key 是 tuple,并且tuple的每個元素都是不可變對象,value是 boolean
}
3.3更新dict
直接使用key指派語句,key已經存在,則會替換原來的value
d = {
'Adam': ,
'Lisa': ,
'Bart':
}
d['Paul'] =
print d
{'Lisa': , 'Paul': , 'Adam': , 'Bart': }
d['Bart'] = #key已經存在
print d
{'Lisa': , 'Paul': , 'Adam': , 'Bart': }
3.4周遊dict
直接使用for循環周遊dict的key
d = {
'Adam': 95,
'Lisa': 85,
'Bart': 59
}
for key in d:
print key,':',d[key]
4.set:持有一系列沒有重複且無序的元素。
建立set的方式:調用set()并傳入一個list
例:
s = set(['A', 'B', 'C'])
print s
set(['A', 'C', 'B'])
當傳入包含重複元素的list會自動去掉重複的元素
例:
s = set(['A', 'B', 'C', 'C'])
print s
set(['A', 'C', 'B'])
len(s)
4.1通路set:由于set存儲的是無序集合,則通過判斷一個元素是否在set中來通路set的某個元素
注意:元素的大小寫
s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
'Bart' in s
True
'Bill' in s
False
'bart' in s #注意大小寫
False
4.2set的特點:
1.set的内部結構和dict很像,隻是不存儲value。判斷一個元素是否在set中,速度很快。
2.set中的元素必須是不變的對象
3.set中的元素是無序的
例:
weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])
x = '???' # 使用者輸入的字元串
if x in weekdays:
print 'input ok'
else:
print 'input error'
4.3周遊set
通過for循環周遊
例
s = set(['Adam', 'Lisa', 'Bart'])
for name in s:
print name
Lisa
Adam
Bart #元素順序是不同的
s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for name,score in s:
print name,':',score
4.4更新set:一是把新的元素添加到set中,二是把已有元素從set中删除
添加元素,用set的add()方法
例:
s = set([, , ])
s.add()
print s
set([, , , ])
s = set([, , ])
s.add() #如果添加元素已存在,add()不會報錯,但是不會加入進去
print s
set([, , ])
删除set中的元素,通過set的remove()方法
s = set([, , , ])
s.remove()
print s
set([, , ])
s = set([, , ])
s.remove() #删除不存在則會報錯
Traceback (most recent call last):
File "<stdin>", line , in <module>
KeyError:
總結:用add()可以直接添加,用remove()前需要判斷
譯者介紹:家華,從事mysqlDBA的工作,記錄自己的一些總結