Python数据类型 -- 元组合集合

来源:互联网 发布:进程调度算法实验报告 编辑:程序博客网 时间:2024/04/29 19:54

 

一 元组:
特点:
1 有序的集合
2 通过偏移来取数据
3 属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。
4、元组可以当做字典的键,列表不行

如果要修改元组对象,先转换成列表,在修改,在转换成元组。
tuple类型转换
那为什么有列表还要有元组呢
元组不可变的好处。保证数据的安全,比如我们传给一个不熟悉的方法或者数据接口,
确保方法或者接口不会改变我们的数据从而导致程序问题。

def info(a):
    '''一个我们不熟悉的方法'''
    a[0] = 'haha'
   
a = [1,2,3]
info(a) #调用a列表当做参数,在方法中改变列表a的元素,在函数外面a也是被改变的。
print a # ['haha',2,3] 
如果把a当做元组传进去,就不出现这个问题,不过会报错,因为元组是不可变元素。

另一种方法:
def info(a):
    '''一个我们不熟悉的方法'''
    b = a[:] #这样复制列表是不会改变的。
    b[0] = 'haha'
    return b
a = [1,2,3]
info(a) 
print a # [1,2,3]  


二 集合:集合是没有顺序的概念。所以不能用切片和索引操作。
1 创建集合。set():可变的 ,不可变的frozenset():
接受的参数是可迭代对象,
区别可迭代对象方法:dir()  如果里面有__iter__就是可迭代对象
2 添加操作: add,update
3 删除 remove
4 成员关系 in,not in
6 交集,并集,差集 & | -
7 set去重  列表内容元素重复

##可变集合
#作为整体插入
a = set('abc')
a.add('dee')
print a #set(['a', 'c', 'b', 'dee']) 

#打散进行插入
a.update('python')
print a #set(['a', 'c', 'b', 'h', 'o', 'n', 'p', 't', 'y', 'dee'])

#删除指定的元素。
a.remove('dee')
print a #set(['a', 'c', 'b', 'h', 'o', 'n', 'p', 't', 'y'])

#成员关系,in  ,not in
print 'a' in a #True

##并集,交集,差集
a = set('abce')
b = set('de')
print a & b #两个集合的交集 'e'
print a | b #两个集合的并集
print a - b #两个列表的差集

a = [1,2,3,1,2]
print a
print set(a) # 去掉重复的元素

#不可变集合
t = frozenset('haha')##不能进行添加,修改和删除的操作。

##判断2个集合是否相等,之和元素本身有关,和顺序无关。
print set('abc') == set('cba') #true

0 0
原创粉丝点击