Python 元组和集合的特点及常用操作

一、元组的特点:

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‘])
时间: 2025-01-15 11:32:13

Python 元组和集合的特点及常用操作的相关文章

Python元组类型、字典类型及常用操作

一.元组类型 1.用途 记录多个值,当多个值没有改的需求,此时用元组更合适,Python的元组与列表类似,不同之处在于元组的元素不能修改. 2.定义方式 在()内用逗号分隔开多个任意类型的值 t=(1,6,(5,''),{}) #t=tuple((1,6,(5,''),{})) t1=tuple('hello') 3.常用操作+内置的方法 优先掌握的操作:1.按索引取值(正向取+反向取):只能取 t=(1,6,(5,''),[1,5,3]) t[0]='1' 2.切片(顾头不顾尾,步长) t=(

Python语法速查: 4. 字符串常用操作

(1)字符串常用方法 Python3中,字符串全都用Unicode形式,所以省去了很多以前各种转换与声明的麻烦.字符串属于序列,所有序列可用的方法(比如切片等)都可用于字符串. 注意:字符串属于不可变序列,所有处理修改字符的方法,都会生成一个新字符串返回,原字符串不会变. 字符串方法 简述 举例或说明 字符串内容检查 s.isalpha() 是否所有字符都为字母 'abc'.isalpha()   # 结果为 True s.islower() 字符串中字母是否都为小写(无视其中的非字母字符) '

python openpyxl 2.5.4 版本 excel常用操作封装

最近搭框架用的openpyxl 2.5.4版本,之前封装的函数有些提示不推荐使用了,我做了一些更新: 代码: # encoding=utf-8 from openpyxl import load_workbookfrom openpyxl.styles import Border, Side, Fontimport time class parseExcel(object):    def __init__(self, excelPath):        self.excelPath = ex

python基础之列表常用操作及知识点小结

列表(list) List(列表) 是 Python 中使用最频繁的数据类型.列表可以完成大多数集合类的数据结构实现.它支持字符,数字,字符串甚至可以包含列表(所谓嵌套).列表用[ ]标识,是python最通用的复合数据类型. 常用操作 L=[1,2,3,'xyn',5] 代码 含义 输出 L.append(‘a’) 在L列表后追加元素 [1,2,3,’xyn’,5,1,’a’] L.insert(0,’a’) 在L[0]的位置插入’a’ [‘a’,1,2,3,’xyn’,5,1] L.pop(

Python的列表&amp;元组&amp;字典&amp;集合

目录 列表(list) 列表的定义 列表的查询 增加数据 修改数据 删除数据 其它常用操作 元组(tuple) 元组的拆包 具名元组 字典(dict) 创建字典 字典添加数据 查询字典数据 修改字典数据 删除字典数据 其它操作 字典的遍历 集合(set) 集合的创建 访问集合 更新集合 删除集合 集合的操作符 集合应用 列表(list) ? 列表(list)是python以及其他语言中最常用到的数据结构之一.Python使用中括号 [ ] 来解析列表.列表是可变的(mutable)--可以改变列

python中列表 元组 字典 集合的区别

列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复项的.如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的.pyt

Python列表、元组、字典和字符串的常用函数

Python列表.元组.字典和字符串的常用函数 列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object合并.注意:object如果是整型,必须以列表的方式传入,不可以以整型或元组的方式传入 2.ls.append(object) 将object作为一个整体插入到ls最后,object可以是字符串,元组,列表和字典 3.ls.insert(index, object

python中字典,元组,集合

python中的字典,元组,集合 -dict -tuple -set dict 字典增删改查 字典创建 my_dict = {'a':1,'b':2} my_dict {'a': 1, 'b': 2} de8ug = {'name':'de8ug', 'city':'beijing', 'code':'python'} #个人信息 de8ug['name'] 'de8ug' de8ug['city'] 'beijing' de8ug.get('name') #尝试去获取name的值 'de8ug

Python学习—元组与集合

1.元组(tuple) Python 的元组与列表类似,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号. 1.元组定义 (1).定义一个tuple时,在定义的时候,tuple的元素就必须被确定下来,并且以后不可更改其值. >>> tup1 = ('this','is','aaaa') >>> tup2 = (1,2,3,4) >>> tup3 = (1,2,3,'ssss') >>> tup4 = 'aa','bb',