Python数据类型-续

day 6

一、列表

1、基本使用:

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字(它的位置),或索引,第一个索引是0,第二个索引是1,依此类推。

#列表类型
# ======================================基本使用======================================
# 1、用途:记录多个值(同种属性)
# 2、定义方式:在[]内用逗号分隔开多个任意类型的值
# l=['a','b','c'] #l=list(['a','b','c'])
# 类型转换
# l=list('hello')
# l=list({'x':1,'y':2})
# print(l)

 

2、列表中值的访问(存取、切片):

使用下标索引来访问列表中的值,同样你也可以使用方括号的形式截取字符(切片)

#按索引存取值(正向存取+反向存取):即可存也可以取
l=['a','b','c','d'"e"]
# print(l[0])    #取出列表中的第一个值
# print(l[-1])   #取出列表中的最后一个值
# print(id(l))   #取出列表的内存地址
# l[0]='A'       #字符串中这种操作回报错  但在列表中不会  这样会改变相应位置上的元素的值
# print(id(l))   #修改过内部索引对应的值以后ID不会改变   列表即为可变型
# l[4]='EEEEEE'  
# print(l)
# l[5]='EEEEEE'  #不存在的索引,会出现报错
切片(顾头不顾尾)
# print(l[1:4])
# print(l)
#结果: ['b','c','d']

 

3、列表更新(增加、插入):
增加
# l=['a','b','c','d','e']
# l.append(3333333)
# l.append(44444)          #在最后增加
# print(l)
插入
# l.insert(0,11111111111)  #在指定位置插入
# print(l)

 

4、删除列表中的元素:
# l=['a','b','c','d','e']
# del l[0]                #通用型删除方法
# res=l.remove('b')       #直接移除  无返回值  参数一个(删除对象)
# print(l)
# print(res)
# res=l.pop(0)           #删除   并且返回删除值  参数默认最后一个值
# print(l)
# print(res)

 

5、循环列表:
# l=['a','b','c','d','e']
# for item in l:
#     print(item)

 

6、长度和成员运算:
#长度
# l=['a','b','c','d','e']
# print(len(l))
#成员运算in和not in
# print('a' in l)
# print('ssssss' not in l)

 

7、列表的函数和方法汇总:

a、函数

序号函数备注
1 cmp(list1, list2) 比较两个列表的元素
2 len(list) 列表元素个数
3 max(list) 返回列表元素最大值
4 min(list) 返回列表元素最小值
5 list(seq) 制造列表

 

 

 

 

 

 

 

 

b、方法

序号 方法备注
1 list.append(obj) 在列表末尾添加新的对象
2 list.count(obj) 统计某个元素在列表中出现的次数
3 list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4 list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
5 list.insert(index, obj) 将对象插入列表
6 list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7 list.remove(obj) 移除列表中某个值的第一个匹配项
8 list.reverse() 反向列表中元素
9 list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序

 

 

 

 

 

 

 

 

 

 

 

 

 

c、类型总结:

# ======================================该类型总结====================================
# 存多个值
# 有序
# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
# 练习题
#1. 队列:先进先出
l=[]
# # 入队
l.append('first')
l.append('second')
l.append('third')
print(l)
# # 出队
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))
​
#2. 堆栈:后进先出
l=[]
# 入栈
l.append('first')
l.append('second')
l.append('third')
print(l)
# 出栈
print(l.pop())  #pop的参数不写默认为-1
print(l.pop())
print(l.pop())

 

二、元组

1、基本使用:

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

# ======================================基本使用======================================
# 1、用途:元组就是一个不可变的列表
# 2、定义方式:在()内用逗号分隔开多个任意类型的元素
# t=(1,2.2,'aa',('b','c'),['a','b','c']) # t=tuple(...)
# print(type(t))
# 强调:
# l=['a']
# print(type(l),l[0])
# t=('a',)    #当元组中只有一个元素时,必须要加上一个逗号,不然python解释器无法辨别为元组
# print(type(t))
# print(t)
# msg=('hello world')
# 类型转换
# t1=tuple('hello')
# t2=tuple([1,2,3])
# print(t1)
# print(t2)

 

2、基本操作:

a、内置函数

序号函数备注
1 cmp(tuple1, tuple2) 比较两个元组元素。
2 len(tuple) 元组元素个数
3 max(tuple) 返回元组元素最大值
4 min(tuple) 返回元组元素最小值
5 tuple(seq) 制造元组













基本操作:
#优先掌握的操作:
# t=(1,2.2,'aa',('b','c'),['a','b','c'])
#1、按索引取值(正向取+反向取):只能取
# print(t[0])
# print(t[-1])
# t[0]=1111111111
#2、切片(顾头不顾尾,步长)
# t=('a','b','c','e','f')
# print(t[1:4])
#3、长度
# print(len(t))
#4、成员运算in和not in
# print('a' in t)
#5、循环
# for item in t:
#     print(item)
# 需要掌握的操作
# t=('a','b','c','e','a','f')
# print(t.index('a',1,5))    #查找元素对象
# print(t.count('a'))        #对元素进行计数

  

3、元组总结
# ======================================该类型总结====================================
# 存多个值
# 有序
# 不可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
# t=('a','b','c')     
# print(id(t))
# t=('A','B','C')
# print(id(t))
​
注:下面这种看似改变元组的值的操作实质上并没有改变元组,元组中的索引所对应的地址没有发生变化
#t=('a',111,['b','c'])
#print(id(t[0]),id(t[1]),id(t[2]))
#t[2][0]='B'
# print(t)
#print(id(t[0]),id(t[1]),id(t[2]))

 

三、字典

1、基本使用:

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 。

# ======================================基本使用======================================
# 1、用途:记录多个值,列表是索引对应值,而字典是key对应值,其中key对value有描述性的功能
# 2、定义方式:在{}用逗号分隔开多个元素,每个元素都是key:value的形式,
其中key可以是不可变类型,但通常是字符串类型
而value可以是任意类型
# d={1:'aaa',2.2:'bbb','xxx':'ccc',(1,2,3):'dddd'} #d=dict(...)
# print(d[(1,2,3)])
# 类转换  字典的三种制造方法
##1
# d=dict(x=1,y=2,z=3)
# print(d)
##2  针对一下这种由多个有两个元素构成的元组组成的列表
# items=[('name','egon'),('age',18),('gender','male')]
# d={}
# for item in items:
#     d[item[0]]=item[1]
# d=dict(items)
# print(d)
##3
# 了解  快速创造一个包含指定key的字典
# keys=['name','age','gender','height','weight']
# d={}
# for key in keys:
#     d[key]=None
# d={}.fromkeys(keys,None)
# print(d,type(d))

 

2、字典的操作方法:

a、优先掌握的操作:

# 3、常用操作+内置的方法
#优先掌握的操作:
#1、按key存取值:可存可取
dic={'name':'egon','age':18}
# dic['xxxx']             #key在字典中不存在,则会发生报错
# print(dic.get('name'))  #获取字典中的key(get传入的参数)的值
# print(dic.get('xxx'))   #如果get传入的key在字典中不存在,则返回None
# print(dic['name'])
# dic['name']='EGON'      #修改字典中key所对应的值
# dic['gender']='male'    #如果字典中没有这个key,则新增一个key:value元素
# print(dic)
# l=['a','b','c']         #
# l[0]='A'                #修改列表中所对应索引的值
# l[4]='AAA'              #列表中没有此索引,出现报错
#2、长度len
# dic={'name':'egon','age':18}  
# print(dic) 
# print(len(dic))        #统计字典中key或者value的个数
#3、成员运算in和not in :是以字典的key为准的
# dic={'name':'egon','age':18}
# print('name' in dic)        
# print('egon' in dic)
​
​
#4、删除
dic={'name':'egon','age':18}
# del dic['name']         #通用删除符
# print(dic)
# res=dic.pop('name')     #删除name所对应的value病将其返回
# print(dic)
# print(res)
# res=dic.popitem()     #随机删除字典中的一组元素
# print(res)
#5、键keys(),值values(),键值对items()
# 在python2
# >>> dic={'name':'egon','age':18}
# >>> dic.keys()
# ['age', 'name']
# >>> dic.values()
# [18, 'egon']
# >>> dic.items()
# [('age', 18), ('name', 'egon')]
# 在python3
# >>> dic={'name':'egon','age':18}
# >>> dic.keys()
# dict_keys(['name', 'age'])
# >>> dic.values()
# dict_values(['egon', 18])
# >>> dic.items()
# dict_items([('name', 'egon'), ('age', 18)])
#6、循环
# dic={'name':'egon','age':18}
# for k in dic:
#     print(k)
# for k in dic.keys():
#     print(k)
# for v in dic.values():
#     print(v)
# for k,v in dic.items():   #k,v=('name', 'egon')
#     print(k,v)

 

b、需要掌握的操作:

# 需要掌握的操作
# dic={'name':'egon','age':18}
# dic={'name':'egon','age':18}
# dic.update({'age':19,'gender':'male'})  将update中的字典更新到旧字典,两边都有的key,值以新字典中的为准,旧字典中没有的进行新增。
# print(dic)
# setdefault方法:有返回值
# dic={'name':'egon','age':18}
# 当key存在时,不改原值,返回原值
# res=dic.setdefault('name','EGON')
# print(dic)
# print(res)
# 当key不存在时,增加新值
# res=dic.setdefault('gender','male')
# print(dic)
# print(res)

 

3、字典总结:

# ======================================该类型总结====================================
# 存多个值
# 无序
# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)

 


a、字典的内置函数:
序号函数备注
1 cmp(dict1, dict2) 比较两个字典的元素
2 len(dict) 字典元素个数,即键的总数
3 str(dict) 输出字典可打印的字符串表示。
4 type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型

 

 

 

 

 

 

 

b、字典的内置方法:

序号 方法备注
1 dict.clear() 删除字典内所有元素
2 dict.copy() 返回一个字典的浅复制
3 dict.get(“key”) 返回指定键的值,如果值不在字典中返回default值
4 dict.update(dict2) 把字典dict2的键/值对更新到dict里。
5 dict.pop(“key”) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
6 dict.popitem() 随机返回并删除字典中的一对键和值。
7 dict.setdefault(key,val) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default。
8 dict.keys() 以列表返回一个字典所有的键。
9 dict.values() 以列表返回字典中的所有值。
10 dict.items() 以列表返回可遍历的(键, 值) 元组数组。
11 dict.has_key(“key”) 如果键在字典dict里返回true,否则返回false。
12 dict.fromkeys(seq,val) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值。

 

 

 

 

 

 

 

 

 

四、集合

1、基本使用:
# ======================================基本使用======================================
# 1、用途:I: 关系运算  II:去重
# 2、定义方式:在{}内用逗号分隔开多个元素,但是元素的特点是
# I: 集合内的元素必须是不可变类型
# II: 集合内元素无序
# III: 集合内元素不能重复
# s={1,'aaa',2,} #s=set(...)
# print(s,type(s))
# s=set()
# print(s,type(s))
# s={1,1,1,1,1,1,1,1,1,1,1,1,'a','a','a'}
# print(s)     #实际保存的集合为{1,"a"}
# 数据类型转换
# res=set('hello')
# print(res)    #{"h","e","l","o"}
# res=set([1,'a','b'])
# print(res)   #{1, 'a', 'b'}

 

2、基本操作:
# 3、常用操作+内置的方法
#优先掌握的操作:
#1、长度len             同其他类型
#2、成员运算in和not in   同其他类型
​
​
pythons={'张铁蛋','李铜淡','王金蛋','赵银胆','alex','kevin'}
linuxs={'oldboy','张铁蛋','赵银胆','alex','wxx'}
​
3、|合集:求所有报名的学生
# print(pythons | linuxs)
# print(pythons.union(linuxs))
4、&交集:求同时报名两门课程的学生
# print(pythons & linuxs)
5、-差集: 求只报名python课程的学员
# print(pythons - linuxs)
# print(linuxs - pythons) #求只报名linux课程的学员
6、^对称差集:求没有同时报名两门课程的学生
# res=(pythons - linuxs) | (linuxs - pythons)
# res=pythons ^ linuxs
# print(res)
7、==  判断两个集合是否互为父子集 即是否相等
# s1={1,2,3}
# s2={3,2,1}
# print(s1 == s2)
# 注意:父子集描述的是一种包含与被包含的关系
8、父集:>=  用于判断父子集  判断包含关系
9、子集:<=
# s1={1,2,3}
# s2={1,2,3,4}
# print(s2 >= s1)
# print(s1 <= s2)
# 需要掌握的
# s1={1,2,3}
# s1.update({3,4,5,6})  同字典的更新
# print(s1)
​
s1={1,'aa','bb',3}
# print(s1.pop())       随机移除一个元素
# res=s1.remove('bbbb')  从集合中删除元素'bbbb', 如果不存在则引发 KeyError
# print(s1)
# print(res)
# s1.discard('bbb')  如果在 set “s”中存在元素 x, 则删除
# s1.add(4)
# print(s1)

 

3、集合总结:

# ======================================该类型总结====================================
# 存多个值
# 无序
# 可变(1、可变:值变,id不变。可变==不可hash 2、不可变:值变,id就变。不可变==可hash)
# 集合的去重
# 局限性
#1. 只能针对不可变类型
#2. 不能保证原来的顺序

 

 

posted @ 2018-11-22 18:19  zhao_peng  阅读(245)  评论(0编辑  收藏  举报