一 元組:
特點:
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')##不能進行添加,修改和刪除的操作。否則報錯。