今日课程内容
一,元祖
二、字典
三、集合
一、元祖
1.1元祖的定义: 元祖使用()元素用逗号隔开的一系列元素。 #ti=(1,0) #t3=tuple((1,2)) #t4=()#空元素 #t5=(1,)#一个元素
1.2元祖的特性: 1.有序存储,可以存储多个数据 2.不可变(注意:内部可以包含对象,可变对象依旧可变)
1.3元祖的常用操作: 1.因为有序存储所以可以通过索引取值 2.切片 3.len(item元素的个数)
1.4内置方法: #print(t.count)#表示该数据集合可以存放多个相同数据并计算 #print(t.index)#表示通过元祖元素取到想应的下标
1.5应用场景: #将不允许操作的元列表转化为元祖; #将允许操作的元祖转化为列表
二、字典
字典的定义: 字典 #特别理解:dict是python中仅存的mapping类型 #2.1定义:用{}表示字典每个key和value用“:”和逗号分开 #2.2特性:1,dcitde Key可以为所有不可变类型:int\float\str\bool\None # 2.dict的value 可以为所有数据类型 #2.3.注意:Key具有唯一性(重复的会覆盖旧值)》》value可以重复 #4.4.字典无序存储,无索引,无切片。但是可以用key取值
#(二)常用操作: #1.增:dic={}key无则增加新的value 有则更新 #2.改key存在则更新 #3.删del dic["name"]通过key制定删除,并返回删除对象value #4.查:print(dic["name"])=通过key查找对应的value
#5.补充:dic.get("c")
# 浅拷贝: 宏观字典会拷贝,但内部数据延用原来数据 d1 = dic.copy() print(id(dic), id(d1)) print(id(dic[‘list‘]), id(d1[‘list‘])) dic[‘list‘].append(30) print(d1[‘list‘]) # 深拷贝:字典及内部数据都进行拷贝 from copy import deepcopy dic = {‘list‘: [10, 20]} d2 = deepcopy(dic) print(id(dic), id(d2)) print(id(dic[‘list‘]), id(d2[‘list‘])) print(d2) dic[‘list‘].append(30) print(dic) print(d2)
#6.字典的内置方法: # 1.dic.popitem #随机删除返回原值(key,value) # 2.dic.get # 3.dic.item # 4.dic.setdefault
三、集合
#三、集合的定义: # 1.1.单列数据集合:str\list\tuple\set\ 双列:dict # 2.2.无序存储:无key无index,无法取值 # 3.3.可变数据类型,内部存放任意类型数据 # 4.4{}代表空字典,set()来创建空集合:set=() set1=("abc")
#集合内置方法----
集合间的运算 (& | ^ - > < ==)
#1.交集
set_v = {"a", "b", "c", "owen"} set_v2 = {"a", "b", "c", "engon"} # 交集 # 方法一: set_p =set_v & set_v2 print(set_p) #{‘a‘, ‘c‘, ‘b‘} #方法二: set_p=set_v.intersection(set_v2) print(set_p) #{‘a‘, ‘c‘, ‘b‘}
2.并集:
#并集:方法① set_p=set_v |set_v2 print(set_p) #set_p=set_v.intersection(set_v2) #方法②: set_p=set_v.union(set_v2) print(set_p) #{‘owen‘, ‘egon‘, ‘b‘, ‘c‘, ‘a‘}
3,.差集
#差集 #1 set_p=set_v -set_v2 print(set_p) set_p=set_v.difference(set_v2) print(set_p) >>{‘owen‘} {‘owen‘}
4.对称差集
# 并集 res = p_set | l_set print(res) res = p_set.union(l_set) print(res) # {‘z‘, ‘c‘, ‘y‘, ‘x‘, ‘b‘, ‘a‘, ‘egon‘} # 差集 res = p_set - l_set print(res) # {‘a‘, ‘b‘, ‘c‘} res = l_set.difference(p_set) print(res) # {‘x‘, ‘z‘, ‘y‘} # 对称差集 res = p_set ^ l_set print(res) res = p_set.symmetric_difference(l_set) print(res) # {‘y‘, ‘a‘, ‘b‘, ‘x‘, ‘z‘, ‘c‘} print(p_set) print(l_set) # p_set.difference_update(l_set) # 将运算结果赋值给调用者 p_set = p_set - l_set print(p_set) # {‘c‘, ‘a‘, ‘b‘} print(l_set) # {‘egon‘, ‘z‘, ‘y‘, ‘x‘}
5.补充
# 添加删除操作 s = set() s.add(‘abc‘) s.add(‘xyz
案列:
# 案例: 不区分大小写,计算每一个名字出现的次数,记录在字典中ls = [‘Owen‘, ‘owen‘, ‘Egon‘, ‘LiuXX‘, ‘Liuxx‘, ‘egon‘, ‘egon‘]# {‘owen‘: 2, ‘egon‘: 3 ...}
3 常用操作+内置的方法pythons={‘李二丫‘,‘张金蛋‘,‘李银弹‘,‘赵铜蛋‘,‘张锡蛋‘,‘alex‘,‘oldboy‘}linuxs={‘lxx‘,‘egon‘,‘张金蛋‘,‘张锡蛋‘,‘alex‘,‘陈独秀‘}# 取及报名python课程又报名linux课程的学员:交集
# 1.统计元组中所有数据属于字符串的个数,提示:isinstance() # 数据:t1 = (1, 2, ‘3‘, ‘4‘, 5, ‘6‘) # 结果:3 # 2.将以下数据存储为字典类型 # 数据:info = "name:Owen|age:18|gender:男" # 结果:{‘name‘: ‘Owen‘, ‘age‘: 18, ‘gender‘: ‘男‘} # 注:年龄存储为数字类型 # 3.完成数据的去重 # 数据:t3 = (1, 2, 1, 2, 3, 5, 9) # 结果:t3 = (1, 2, 3, 5, 9) # 注:从不考虑顺序、考虑顺序两方面完成 # 4.计算元组中所有可以转换为数字的数据的总和 # 数据:t4 = (10, ‘abc‘, ‘100‘, ‘3‘) # 运算结果:113 # 5.将数据转换类型存储 # 原数据:dic = {‘name‘: ‘Owen‘, ‘age‘: 18, ‘gender‘: ‘男‘} # 处理后:info = [(‘name‘, ‘Owen‘), (‘age‘, 18), (‘gender‘, ‘男‘)] # 拓展:选做 # 1.计算元组中所有可以转换为数字的数据的总和 # 数据:t4 = (10, ‘abc‘, ‘100‘, ‘3‘, ‘壹‘, ‘肆‘, [1000], (10000,)) # 运算结果:11118 # 提示: # -- 利用字符串isnumeric()判断汉字 # -- 利用字典{‘壹‘: 1 ...}将汉字转换为数字 # -- 利用isinstance()将list和tuple中数据取出来 # -- 先将所有转化为数字的数据存放在一个单列集合中,在做运算 # 2.完成录入电话本 # 需求: ‘‘‘ -- 从键盘中录入姓名(不区分大小写): -- 姓名必须是全英文组成,不是则重新录入姓名,如果是q,代表退出 -- 从键盘中再录入电话: -- 电话必须为数字且长度必须是11位(不能转换为数字) -- 如果出现姓名相同,则保留最后一次电话号码 -- 形成的数据是有电话分组的,如:第一次录入Owen,13355667788,则会形成 -- { ‘O‘: { ‘Owen‘: ‘13355667788‘ } } 最终数据,分组名一定大写: { ‘E‘: { ‘egon‘: ‘17788990000‘, ‘engo‘: ‘16633445566‘ }, ‘O‘: { ‘Owen‘: ‘13355667788‘ } } ‘‘‘
原文地址:https://www.cnblogs.com/mofujin/p/10595503.html
时间: 2024-10-10 08:42:25