Python课程回顾(day06)

数据类型的补充

一、元组(tuple):元组跟列表唯一不一样的就是元组是一个不可变的列表,用于记录只有读的需求而没有取的需求的多个值,定义方式是在小括号内用逗号分隔开来的多个任意类型的值。

元组与列表的内置方法基本等同于列表,例如len(长度),成员运算(in/not in),循环,切片等等,它也可以按照索引取值,所以它也是有序的

总结来说tuple的类型是可以存放多个值且不可变而有序的的类型。

二、字典(dict):字典是用来记录多个不同种类的值,定义方式是在花括号内使用键值对(key:value)用逗号分割开的多个不同种类的值。

key的功能通常是用于对value的描述的,key通常是字符串类型,但其实key其实是不可变类型。

字典常用的操作及内置方法:

1:取值,字典取值的方式是按key取值,可存可取。字典与可以使用get方法取值

d={'x':1}
print(d['x'])    通过key取值
print(id(d))     查看id
d['x']=1111      改变key的值
print(d)         
print(id(d))     改变后的值与改变之前的值的内存地址是一样的
d['y']=2222      可以直接添加新的key
print(d)        

d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
v=d.get('namexxxxxxx') 此处get要取得key不存在字典内,但不会报错,会返回None
print(v) 若直接根据字典的key取字典内不存在的值,则会报错!

2:长度,字典的长度是按照key来计算的,有多少个key长度就为几。

d={'x':1,'y':2,'z':3}
print(len(d))

3

3.成员运算in、not in:字典中的成员运算只能判断key是否存在在通过key去判断值,不可以直接判断key后面的值存不存在。

d={'x':1,'y':2,'z':3}
print(1 in d)

False

4.删除:字典中除了del只能使用pop与popitem删除,使用pop删除key会返回key在当前列表所对应的值。popitem删除是随机删除,但会返回key与key对应的值。

d={'x':1,'y':2,'z':3}

res=d.pop('y')
print(d)
print(res)

{'x': 1, 'z': 3}
2

res=d.popitem()
print(res)

('z', 3)

5.键keys.(),值values.(),键值对items.():

d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}

print(list(d.keys()))    使用列表类型打印出字典d里的所有key

print(list(d.values()))  使用列表类型打印出字典d里的所有value
print(list(d.items())    使用列表类型打印出字典d里的所有(key,value)

6.循环

for k in d.keys():
    print(k)           使用for循环将字典d里的keys全部取出
for k in d:            此处不加任何后缀默认取出全部的key
    print(k)           
for v in d.values(): 
print(v) 使用for循环将字典d里的value全部取出

for k,v in d.items():
print(k,v) 使用for循环将字典d里的所有键值对全部取出(key,value)

7.update、setdefault添加

d={'name':'egon','age':18,'sex':'male','hobbies':[1,2,3]}
字典默认的添加操作方式:
d['x']='1111' 若有X则覆盖,若没有则添加

d.update({'x':1,'name':"EGON"}) update可以更新字典覆盖原来的value值,也可添加多个新的key:value值 print(d) d.update({ })

setdefault
d={"x":1,"y":2}
res=d.setdefault('x',11111) 在key存在的情况下不修改值,会返回原值
print(d)
print(res) res=1

8.fromkeys:需要是快速制造出一个新的列表,value的初始值全部为None,而key则是来源于列表。

keys=['name','age','sex']
d={}
for k in keys:               使用for循环制造新的字典
    d[k]=None

d={}.fromkeys(keys,None)     使用fromkeys制造新字典  fromkeys后的参数只需填key的来源变量名即可 value默认为None
print(d)                         {}.fromkeys(列表,None)

三、集合

定义方式:在花括号内用逗号分隔开的多个值

特点:1.每个值必须是不可改变类型

   2.集合是无序的

   3.集合内的元素不能重复

集合的作用:

集合的主要作用是关系运算以及去重

 

使用方法:

1.集合内不能有列表(可变)等其他可变类型的值

2.集合内会将重复的值去掉直至剩余一个(字典会将相同的key后的值按照最后一个key作为反馈值)

3.集合将列表转换成集合时若列表内含有子列表,子列表放不进去的。会报错

一、关系运算

pythons={'egon','张铁蛋','李铜蛋','赵银弹','王金蛋','艾里克斯'}
linuxs={'欧德博爱','李铜蛋','艾里克斯','lsb','ysb','wsb'}


Pythons & Linuxs
将两个集合内相同的值取出(&)
Pythons | Linuxs
将两个集合内所有值取出(|)   :会去重
Pythons - Linuxs
将只在减号之前的集合内出现的值取出(-)   减号之后集合内也同样出现的值不包含在内  
Pythons ^ Linuxs
将只在第一个集合内及只在第二个集合内出现的值取出(^)   两个集合内都出现的值不包含在内

二、父子集:即包含与被包含的关系

s1={1,2,3}
s2={1,2}
print(s1 >= s2)    s2内的值在s1中也有且s1中的值比s2要更加多   即s1 > s2
print(s1.issuperset(s2)) superset为父集,后边括号内的元素为要比较的子集 print(s2.issubset(s1)) subset为子集,后边括号内的元素为要比较的父集

s1={1,2,3}
s2={3,2,1}
print(s1 == s2) 两个集合相等(因为是无序)的话,s1与s2是相互父子集

三、去重:集合去重是有局限性的,一会打乱原值的顺序,二只能针对不可变的值去重。

stus=['egon','lxx','lxx','alex','alex','yxx']
new_l=list(set(stus))     使用列表将去重后的结果让入列表        
print(new_l)

四、添加,删除

s1={1,2,3}
s1.update({3,4,5})     会在更新集合过程中再次去重
print(s1)
print(s1.pop())        弹出也是随机弹出
print(s1)
s1.remove(2)           remove删除
print(s1)

s1.discard(4) 若删除集合内不存在的值,discard不会报错且会反馈集合的原值 remove若同样操作则会报错
s1.add(4)              add是独有添加功能   可以添加单个值
print(s1)

五、判断是否有交集

s1={1,2,3}
s2={4,5}
print(s1.isdisjoint(s2))       isdisjoint是判断两个集合是否完全没有交集

 

总结:

可存多个值,是无序的

是可变不可hash类型的

posted @ 2018-09-18 23:05  BlackLinks  阅读(233)  评论(0编辑  收藏  举报