天天看點

python入門list和tuple,dict和set

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'])

python入門list和tuple,dict和set

總結: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的工作,記錄自己的一些總結