1、集合(set)
创建:{} set([])
注意:创建空的集合要用set(),{}这个表示的是一个空字典
特点:元素唯一,无序,可变
运算: & 交集 | 并集 - 差集
方法:
s.add(x) 添加单个元素
s.update() 添加多个元素
s.remove() 移除元素
s.clear() 清空集合
example:
se = {1,2,3,4} se2 = {1,2,3,3,4} se3 = {1,2,3,'d',4} #se2[0] 因为集合是无序,所以不能索引 #set(),相当于强制类型转换 se5 = set([1,2,3]) li = [1,2] #se6 = {'a',li} #可变对象,不能成为集合的元素,破坏唯一性 ###集合的运算 并 交 差 与非^ se1 ={1,2,3,4,5} se2 = {4,5,6,7,'a'} se1 | se2 #将两个 集合,拼接到一起,去掉重复部分 se1 | se2 | se3 se1 & se2 #取出相同部分 se1 - se2 #减去两个集合 共有的部分 se1 ^ se2 # 首先相等于将俩个集合并,然去掉重复部分 #集合常用方法 se.add(5) se.clear() se.update(['a','b','c','d']) #同时可以添加多元素, se.update((1,2,3,4)) #必须是可迭代对象 se.update('wsx') #se.remove('jia') #移除指定元素 se.pop() #由于集合无序的,所以 pop 是随机弹出 # 空集合 s = set() # 集合取值 se = list(se) #可以转成list,然后用索引 se[0] #集合 是可变的 se ={1,2,3} se.add('jianeng')
2、强制类型转换
a = int(1.1) b = float(1) c = bool(0) c = bool(1) d = complex(2) li =[1,2,3] tu =(1,2,3) s ='abc' li = list(tu) li =list(s) #li = list(1) 必须是可迭代对象 tu = tuple(li) tu = tuple(s) #tu = tuple(1) 必须是可迭代对象 s =str(li) #"['a', 'b', 'c']" s = str(tu) #"('a', 'b', 'c')" s = str(1)
3、字典
创建: {key:value} (大括号创建字典的键时要加引号)
dict(key=value) (括号里赋值方式,名字=对象,不要引号)
字典里的键和值用‘:’隔开,一对键和值组成一个项,项和项之间用‘,’隔开
特点:
键值唯一,重复会被重新复制、无序、可变
添加和取值
dict[key]=value key存在则修改值,没有则添加
属性方法
.update({ }) 在字典中添加多个项
.items() 返回字典的各个项
.keys() 返回字典的键
.values() 返回字典的值
.get(k) 如果键k在,返回键k的值,不存在则返回None
.get(k,x) 如果键k在,返回键k的值,不存在则返回x
.pop(k) 返回并移除键k所对应的元素,不存在则抛出异常
.pop(k,x) 返回并移除键k所对应的元素,不存在则返回x
总结:
key唯一,故可以是数字,字符串,元组
总结:
可变对象:list set dict
不可变对象: str tuple
example:
# di[0] 无序 di ={'a':2,'b':3,'c':4,'a':1} # key 唯一 #di6 = {li:55,'a':1} # key不可变的 #两种定义方式 di5 = {'a':1} di3 = {1:2} # 符合,命名规范 di2 = dict(a = 1) #di4 = dict(1 =2) ##字典取值,通过key di['a'] ##添加,修改。没有就添加,有就修改 di['a'] =10 di['jianeng'] = 'jianeng' di['jianeng'] = 5 ####字典的自带方法 #di.clear() di2 = di.copy() #生成一个新的对象 di.fromkeys('asd') di.fromkeys('asd',2) di.get('a') di.get('d','not find') di.items() #返回每一个键值对 list(di.items()) list(di.items())[0] di.keys() list(di.keys()) di.pop('a') #指定弹出 di.pop('w','not find') #如果没有‘w’,就返回‘not find’ di.popitem() #随机弹出 di.setdefault('b',12) #有,就你返回原来的value di.setdefault('a',12) #没有,就添加 di.update({'a':10,'jianeng':'jianeng'}) #有,就更新。没有,就添加 di.values() list(di.values())
4、运算符
算术运算符:+ ,- , *, /, %, **,// 赋值运算符:= ,+=,-=, *=,/=,%=, **= 比较运算符:==,!=, >, <, >=,<= 成员运算符:in , not in 身份运算符:is , is not 判断两个名字是否指向同一个对象,当id相同时返回True(==比较运算是判断的值) 逻辑运算符:and,or,not and(与) 两个条件都满足时才返回True or(或) 有一个条件满足了就返回True not(非) 取反 计算顺序:默认地,运算符优先级表决定了哪个运算符在别的运算符之前计算。然而,如果你想要改变它们的计算顺序,你得使用圆括号 结合规律:运算符通常由左向右结合,即具有相同优先级的运算符按照从左向右的顺序计算 ''' ** #幂运算 + - * / % #算术运算符 < > <= >= #比较运算符 == != #比较运算符 = %= /= -= += *= **= #赋值运算符 is is not #身份运算符 in not in #成员运算符 not > and > or #逻辑运算符 '''
5、作业
#1.有两个列表 x = [1,2,3,'a','b','c'] y = ['a','b','c'] 找出x列表中在y 中也有的元素 #2.新建一个字典,用3种方法往字典里面插入值;用 4 种方法取出values,用2种方法取出key #3.定义我们学过的每种数据类型,并且注明,哪些是可变,哪些是不可变的. # 试着写一个嵌套字典,和一个嵌套集合,内容随意。 #4.s1 = set(1,2,3),s2 = set(1,[2,3]) , s3 = set([1,2,3]) # 声明这3个变量,为何有的会报错?分析结果,解释出现这种结果的原因。