您的位置:首页 > 编程语言 > Python开发

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

2014-12-24 15:43 435 查看
一 元组:

特点:
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: