2. 元组(tuple,( ))
元组是轻量级(简化版)列表,不如列表功能强大,元组的所有元素放在()里,元素之间使用逗号隔开,如果只有一个元素,必须在后面加一个逗号,才为元组
>>>x=() #元组的产生,空元组
>>>y=tuple() #元组的产生,空元组
>>>x=(1,2,3,4)
>>>tupe(x) #查看变量类型
<class 'tuple'>
>>>x[0] #支持两种访问元素变量
1
>>>x[-1]
4
>>>x[1]=4
报错
>>>tuple(range(5)) #其他迭代对象转换为元组
(0,1,2,3,4)
>>>
注:元组是不能改变了,即不能改变元素原来的值
元组与列表的异同点
不同点
元组的访问速度比列表快,元组在内部实现上不允许修改其元素值,代码安全,元组作为不可变序列,元组可作为字典的键,也可以作为集合的元素,列表则不能当作字典的使用,也不能作为集合中的元素。
元组是不可变序列,不可以修改、增加、删除元组的元素。
相同点
元组列表都属于有序序列,都支持双向索引访问其中元素,有大量的内置函数及运算符他们都可以使用,元组也支持切片,只能通过切片访问元素。
生成器表达式
生成器表达式结果是一个生成器对象(具有惰性的求值的特点),效率高,空间占用少,适合大数量处理的场合
生成器表达式和列表推导式相似,只是使用圆括号 (),生成器对象的元素,可以将其转换为列表或元组
>>>g=(i for i in range(10)) #创建生成器对象
>>>g
<generateor object <genexpr> at 0x00000003095200>
>>>tuple(g) #根据需要转换为元组
(0,1,2,3,4,5,6,7,8,9) #生成器对象访问结束
>>>tuple(g)
()
>>>
注:只能从前往后访问每个元素,访问过的元素不能再次访问,只在需要时生成新元素
_next_()方法和next()函数访问元素
>>>g=(i for i in range(10))
>>>g._next_() #只能一个一个访问,从左到时右
0
>>>g._next_()
1
>>>next(g)
2
>>>
3. 字典(dict ,{ })
字典包含若干 “键:值” 元素的无序可变序列, “键:值”表示一种映射或对应关系,也称为关联数组,相当于java中的hashmap集合
键可以是python中的任意不可变数据(整数,复数,字符串,实数,字符串,元组等可散列数据),键不能重复,值可以重复
字典的创建
>>>a_dict={'计算机':'java','外语':'English'} #赋值创建
>>>a_dict=dict(计算机='java',外语='English') #以关键参数形式创建
注:这里两种结果是一样的,需要注意的是;第二种创建方法,键不需要''以字符串形式出现,但是值必须要加''以字符串出现
根据已有数据创建字典。例:
>>>k=['a','b','c']
>>>v=[1,2,3]
>>>a_dict=dict(zip(k,v))
>>>a_dict
{'a':1,'b':2,'c':3}
>>>
注:这里的k和v长短不同时,以短的为准
以给定的键为值,创建值为空的字典。例:
>>>a_list=['a','b','c']
>>>a_dict=dict.fromkeys(a_list)
>>>a_dict
{'a':None,'b':None,'c':None}
>>>
字典元素的访问
1. 根据映射关系,提供键值作为下标就可以访问对应值,若键不存在,抛出异常
2. 提供get()方法返回指定键的对应值,并且允许键值不存在可返回特定值。例:
>>>a_dict={'a':1,'b':2}
>>>a_dict.get('a')
1
>>>a_dict.get('c',"不存在")
不存在
>>>
3. 字典对象的遍历。例 :
默认遍历字典的键:
>>>a_dict={'a':1,'b':2,'c':3}
>>>for item in a_dict:
print(item)
a
b
c
items()字典中的元素
>>>a_dict={'a':1,'b':2,'c':3}
>>>for item in a_dict.items():
print(item)
('a',1)
('b',2)
('c',3)
values()指定字典中的值
>>>a_dict={'a':1,'b':2,'c':3}
>>>for item in a_dict.values():
print(item)
1
2
3
字典名 . keys() :可以查看字典中的所有键
元素添加 ,修改与删除
指定键为下标时,为字典元素赋值时,两种含义:
键存在,则修改键对应的值
键不存在,则表示添加一个键:值
字典对象update(),另一个字典对象,一次性全部添加 到当前字典对象,存在相同键,则以另一字典的值为准,对当前字典更新
>>>a_dict={'a':1,'b':2,'c':3}
>>>b_dict={'a':97,'d':4}
>>>a_dict.update(b_dict) #对a作更改,并添加新键值'd':4
>>>a_dict
{'a':97,'b':2,'c':3,'d':4}
>>>
popitem()方法:弹出一个元素
pop()方法:弹出指定键元素
>>>a_dict={'a':1,'b':2,'c':3}
>>>a_dict.popitem()
('a',1)
>>>a_dict.pop('c')
3
>>>a_dict
{'b':2}
>>>
4. 集合(set,{})
创建
>>>a={3,5} #创建集合对象
>>>a_set=set(range(8,14)) #其它对象转为集合
>>>a_set
{8,9,10,11,12,13}
>>>
注:这里集合不存在相同元素,转换时自动去掉重复元素
集合操作与运算
集合操作
add():添加元素
remove():删除指定元素
update() :合并另外一个集合中的元素到时当前元素中,自动去掉重复的元素
pop() :随机删除一个元素并返回该元素
集合运算
| 并集
& 交集
- 差集
^ 对称差集
< 真子集
<= 子集