Python必知必会-数据类型
一、元组
1.元组基础
1)定义:不可变的‘列表’,定义方式(元素1,元素2.......)
2)用途:存多个值,但是只能读不能写
注意:元组的不可变指的是元组内元素id的不可变
t = (11,2,3,5,3) #tuple(11,2,3,5)
2.元组常规操作+内置方法
1)按索引取值(正、反取值,但是不可更改)
t = (11,2,3,5,3) print(t[2]) print(t[-1])
2)切片(顾长不顾尾,步长)
# 取第 2-3 个元素 print(t[1:3])
3)求长度
print(len(t))
4)成员运算in 和 not in
print(2 in t)
5)查看索引和计算相同元素的个数
# 查看索引print(t.index(2)) # 计算相同元素的个数print(t.count(3)
总结:
1.可存多个值
2.有序
3.不可变的
二、字典
1.字典基础
1)用途:以key:value形式存多个值
2)优点:存储快,每个值都有对应的key
3)定义方式:}内以逗号隔开多个元素,格式为{key:value....}
注意:key必须为不可变类型,value可以是任意类型
dic = dict({'name':'zhang','age':18,'x':8,'y':10})
dic = {'name':'zhang','age':18,'x':8,'y':10}
print(dic)
2.字典常规操作+内置方法
1)按key取值,可存可取
dic = {'name':'zhang','age':18}
dic['name'] = 'zh'
print(dic)
2)求长度
print(len(dic))
3)成员运算in 和 not in
print('name' in dic)
4)pop()
# pop(self,key,default)实现删除,返回删除的元素的value # 设置default参数时,可在不存在这个key时做出返回,默认返回None res = dic.pop('name') res1 = dic.pop('sss','不存在这个key') print(res) print(res1)
5)key()、value()、items()
# key() 查看字典中的键值 print(dic.keys()) # value() 查看字典中value值 print(dic.values()) # items() 查看键对 print(dic.items()) # 循环打印出key,默认打印的就是key for x in dic.keys(): print(x) # 循环打印出value for value in dic.values(): print(value) # 循环打印key和value for i,j in dic.items(): print(i,j)
3.需要掌握的操作
1)get()
# 根据索引获取value # 当不存在key返回None print(dic.get('name')) print(dic.get('sss'))
2)popitem()
# 从末尾开始弹出,并返回key和value print(dic.popitem())
3)update()
# update() 更新 # 原字典中存在这个key则修改value值,若不存在则添加 print(dic.update({'x':8,'age':20})) print(dic)
4)setdefault()
# 字典中有这个key,则不修改,返回原来的key对应的value # 没有这个key,则添加并返回添加的key的对应的value res = dic.setdefault('name','ch') res1 = dic.setdefault('x','hyjk') print(res) print(res1)
5)fromkeys()
# 往空字典中批量添加key,默认vlaue为None dic_1 = {} dic_1 = dic_1.fromkeys(['name','age','sex'],None) print(dic_1) dic_1['name'] = 'zhang' print(dic_1)
总结:
1.可存多个值
2.无序
3.可变
练习:
msg_dic={ 'apple':10, 'tesla':100000, 'mac':3000, 'lenovo':30000, 'chicken':10, } for i,j in msg_dic.items(): print(i,j) for key in msg_dic: print(key,msg_dic[key]) for i in msg_dic.keys(): print(i) for j in msg_dic.values(): print(j) # 避免key不存在字典中报错,使用get() print(msg_dic['sss']) print(msg_dic.get('zhang','输入正确的key')) # 字典操作 set_1 = set({11,22,33,44,55,66,77,88,99,90}) dic_1 = {'k1':[],'K2':[]} print(set_1) for i in set_1: if i > 66: dic_1['k1'].append(i) else: dic_1['K2'].append(i) print(dic_1) # 统计s='hello alex alex say hello sb sb' # 中每个单词的个数结果如: # {'hello': 2, 'alex': 2, 'say': 1, 'sb': 2} s = 'hello alex alex say hello sb sb' list_s = list(s.split(' ')) dic_s = {} for i in list_s: count = list_s.count(i) dic_s.setdefault(i,count) print(list_s) print(dic_s)
三、集合
1.集合基础
1)定义方式:在{元素1,元素2...}内用逗号分隔开元素
2)注意问题:集合中没有重复的元素,且无序
集合的元素必须是不可变类型
3)用途:关系运算
去重
# 定义 s = set({1,2,3,4,5,6,4,4,4,4,4'a'}) s = {1,2,3,4,5,6,4,4,4,4,4,'a'} print(id(s),type(s),s) # 去重 ist_1 = ['a','b','b','c','c','c','s'] print(list(set(list_1)))
注意:集合中的元素!!!必须是不可变的,但是集合是可变的,因此不能用列表等可变的数据类型作为元素
s = {[1,2,3],'aa'} # 列表可变,会报错
2.集合常规操作+内置方法实现集合运算
study_linux = {'zhang','alex','egon','李铁','张三'}
study_python = {'李四','zhang','alex','猪','猫','狗'}
1)交集
print(study_linux & study_python) print(study_linux.intersection(study_python))
2)并集
print(study_linux | study_python) print(study_linux.union(study_python))
3)差集
print(study_linux - study_python) print(study_linux.difference(study_python)) print(study_python - study_linux) print(study_python.difference(study_linux))
4)交叉补集---两个集合中不相同的元素的集合
print(study_linux ^ study_python) print(study_linux.symmetric_difference(study_python))
3.需要掌握的操作
study_linux = {'zhang','alex','egon','李铁','张三'}
study_python = {'李四','zhang','alex','猪','猫','狗'}
1)循环取值
for item in study_linux: print(item)
2)求长度
print(len(study_linux))
3)成员运算in 和 not in
print(len(study_linux))
4)删除
# discard() 当删除的元素不存在时,不会报错 # 使用remove()时,不存在会报错 study_python.discard('不存在') print(study_python) study_linux.discard('zhang') print(study_linux) # 因为集合是无序的,所以pop()时是随机删除某个元素 study_linux.pop() print(study_linux)
4.了解知识点
# 父集:爹包含儿子 s1={1,2,3} s2={1,2} print(s1.issubset(s2)) print(s2.issubset(s1)) print(s1.issuperset(s2)) # 实现对列表去重,但保留原列表的顺序 list_old = ['a','d','g','a','sjsjsj','d','a'] list_new = [] set_1 = set({}) for item in list_old: # 当集合中不存在去到的item即list_old的元素时, # 则添加到集合和新的列表中,如此循环旧的列表 if item not in set_1: set_1.add(item) list_new.append(item) print(list_old) print(list_new)
总结:
1.可存多个值
2.无序
3.不可变

浙公网安备 33010602011771号