Python 元组和集合的特点及常用操作
2016-03-06 18:12
676 查看
一、元组的特点:
1、有序的集合
2、通过偏移来取数据
3、属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。
tuple支持的方法很少
通过tuple的类型转换,来修改变量的引用
思考:元组不能改变,那为什么有列表,还要有元组呢?元组一般当成参数传递给方法,而不是传递列表,元组不可变的好处,保证数据的安全,比如我们传给一个不熟悉的方法或者数据接口,确保方法或者接口不会改变我们的数据从而导致程序问题。
二、集合:集合是没有顺序的概念。所以不能用切片和索引操作。内置方法set(),接收可迭代的对象,如果对象有__iter__ 属性,就是可以迭代的对象,如字符串、列表、元组
1、创建集合。set():可变的 ;不可变的frozenset():
2、添加操作: add,update,注意update和add的区别
3、删除 remove
4、成员关系 in,not in
6、交集,并集,差集 & | -
7、set去重 列表内容元素重复
##不可变集合,frozenset,不能进行添加,修改和删除的操作
##判断2个集合是否相等,和元素本身有关,和顺序无关。
list 去重的两种方法
l
练习:
a = (1,2,3)
一、用2种方法输出实现下面的结果:
(5,2,3)
2 判断2是否在元组里
二、集合a = set(['a','b','c'])做下面的操作:
1、添加字符串'jay'到集合a里。
2、集合b = set(['b','e','f','g']) 用2种方法求集合a 和集合b的并集。
1、有序的集合
2、通过偏移来取数据
3、属于不可变的对象,不能在原地修改内容,没有排序,修改等操作。
tuple支持的方法很少
>>> dir(tuple) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>> a = (1,2,3) >>> a[0] 1 >>> a[1:3] (2, 3)
通过tuple的类型转换,来修改变量的引用
>>> a = (1,2,3) >>> b= list(a) >>> b[0]=5 >>> type(b) <type 'list'> >>> b [5, 2, 3] >>> a=tuple(b) ###新生成了一个对象,表面上是修改成功了 >>> a (5, 2, 3)
思考:元组不能改变,那为什么有列表,还要有元组呢?元组一般当成参数传递给方法,而不是传递列表,元组不可变的好处,保证数据的安全,比如我们传给一个不熟悉的方法或者数据接口,确保方法或者接口不会改变我们的数据从而导致程序问题。
#!/usr/bin/python #coding:utf-8 def info(a): ""我们不熟悉的方法"" print 'sss %d' % id(a) a[0]="haha" return a a = [1,2,3] print "start-" print id(a) info(a) #一个列表传给了一个方法,却改变了这个列表的值,这里如果是a=(1,2,3)则相对的安全 print a
#!/usr/bin/python #coding:utf-8 def info(a): b =a[:] #拷贝会生成一个新的列表对象 print 'sss %d' % id(a) b[0]="haha" return a #不会修改列表的值 a = [1,2,3] print "start-" print id(a) info(a) print a
二、集合:集合是没有顺序的概念。所以不能用切片和索引操作。内置方法set(),接收可迭代的对象,如果对象有__iter__ 属性,就是可以迭代的对象,如字符串、列表、元组
1、创建集合。set():可变的 ;不可变的frozenset():
2、添加操作: add,update,注意update和add的区别
3、删除 remove
4、成员关系 in,not in
6、交集,并集,差集 & | -
7、set去重 列表内容元素重复
>>> b=set('abc') >>> b set(['a', 'c', 'b']) >>> b.add('python') #作为一个整体,添加单个对象到集合里 >>> b set(['a', 'python', 'c', 'b']) >>> b.update('hello') #打散了,把对象里的每个元素添加到集合里 >>> b set(['a', 'c', 'b', 'e', 'python', 'h', 'l', 'o'])
>>> b.remove('python') >>> b.remove('python') #删除不存在的原始,会有异常 Traceback (most recent call last): File "<stdin>", line 1, in ? KeyError: 'python' >>> b set(['a', 'c', 'b', 'e', 'h', 'l', 'o'])
>>> 'c' in b True >>> 'x' in b False >>> 'x' not in b True
>>> a = set('abcd') >>> b= set('bcdef') >>> a & b #求集合的交集 set(['c', 'b', 'd']) >>> a | b #求并集 set(['a', 'c', 'b', 'e', 'd', 'f']) >>> a - b #求差集 set(['a'])
##不可变集合,frozenset,不能进行添加,修改和删除的操作
>>> a = frozenset('bac') #frozenset是有序的 >>> a.add('a') Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'frozenset' object has no attribute 'add' >>> a.remove('a') Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: 'frozenset' object has no attribute 'remove' >>> a frozenset(['a', 'c', 'b'])
##判断2个集合是否相等,和元素本身有关,和顺序无关。
>>> print set('abc') == set('cba') True
list 去重的两种方法
l
iststr = ['haha','gag','hehe','haha'] #for循环 m = [] for i in liststr: if i not in m: m.append(i) print m ['haha', 'gag', 'hehe']
>>> m = set(liststr) >>> m set(['gag', 'hehe', 'haha']) >>> print list(m) ['gag', 'hehe', 'haha']
练习:
a = (1,2,3)
一、用2种方法输出实现下面的结果:
(5,2,3)
>>> a = (1,2,3) >>> b=list(a) >>> b[0]=5 >>> a=tuple(b) >>> a (5, 2, 3)
2 判断2是否在元组里
>>> 2 in a True
二、集合a = set(['a','b','c'])做下面的操作:
1、添加字符串'jay'到集合a里。
>>> a = set(['a','b','c']) >>> a.add('jay') >>> a set(['a', 'c', 'b', 'jay'])
2、集合b = set(['b','e','f','g']) 用2种方法求集合a 和集合b的并集。
>>> b = set(['b','e','f','g']) >>> a set(['a', 'c', 'b', 'jay']) >>> a|b set(['a', 'c', 'b', 'e', 'g', 'jay', 'f'])
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法