基礎篇11-python基本數據結構-元組和集合

一 元組:

特點:

1 有序的集合

2 通過偏移來取數據(切片)

3 屬於不可變的對象,不能在原地修改內容,沒有排序,修改等操作。

可以看到,tuple支持的方法比較少

 

tuple類型轉換:如果想排序和修改,先轉成list,修改後再轉回tuple。實質是新生成了一個元組對象。

 

那爲什麼有列表還要有元組呢

 元組不可變的好處。保證數據的安全,比如我們傳給一個不熟悉的方法或者數據接口,
 確保方法或者接口不會改變我們的數據從而導致程序問題。如果元組的話,改變數據會報錯。

def info(a):
    '''一個我們不熟悉的方法'''
    a[0] = 'haha'
   
a = [1,2,3]

info(a)

print a


二 集合:集合是沒有順序的概念。所以不能用切片和索引操作。

1 創建集合。set():可變的 不可變的frozenset():
2 添加操作: add,update
3 刪除 remove
4 成員關係 in,not in
6 交集,並集,差集 & | -
7 set去重  列表內容元素重複


#encoding=utf-8


##可變集合

新建可變集合對象:

info = set('abc')

參數需爲可迭代對象

判斷對象是否可迭代:看該對象的內置方法裏是否有  __iter__  方法,該方法返回一個可迭代對象。

 

集合的添加操作:
1)info.add('python')##添加單個對象到集合裏

print info

2)info.update('python')##把對象裏的每個元素添加到集合裏

print info

 

刪除操作:

info.remove('python')

print info

若刪除不存在的元素,會報錯。
 

##成員操作 in,not in

print 'a' in info

print 'h' in t

print 'jay' not in info

 

##判斷2個集合是否相等,之和元素本身有關,和順序無關。

print set('abc') == set('cba')

 

##並集,交集,差集

print set('abc') | set('cbdef')##並集

print set('abc') & set('cbdef')##交集

print set('abc') - set('cbdef')##差集

 

去除列表中的重複元素:

1)使用set去除列表中的重複元素:

2)for循環方式加in方法

liststr = ['haha','gag','hehe','haha']
#for循環

m = []

for i in liststr:
    if i not in m:
        m.append(i)
       
print m

m = set(liststr)

print list(m)

 

##不可變集合

t = frozenset('haha')##不能進行添加,修改和刪除的操作。否則報錯。



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章