引言:给出一个数字7,它是一个数据,表达一个基本含义,但在我们处理问题的时候,我们经常会遇到的不是一个数据,而是一组数据。一组数据可以表达一个或多个含义,那么怎么让程序把一组数据,当成一个数据来处理呢?或者怎么能让程序更好的组织一组数据,这就是组合数据类型需要完成的任务。
Ⅰ集合数据类型及操作
1. 定义:
①集合是多个元素的无序组合,与数学集合概念一致;
②集合元素之间无序,每个元素唯一,不存在相同元素;
③集合元素不可更改,不能是可变数据类型;
④建立集合类型用{}或set(),建立空集合用set。
e.g:
>>>B =set(“pypy123”)
>>>print(B)
>>>B ={‘p’,’y’,’3’,’1’,’2’}
2. 集合操作符:
①S | T :返回一个新集合,该集合是S和T的并集;
②S – T:返回一个集合,该集合在S中但不在T中的元素;
③S & T:返回一个包括S和T同时拥有的元素的集合;
④S ^ T :返回一个包括S和T中的非相同元素的集合;
⑤S <= T或S ⑥ S >= T或S>T:判断包含关系,根据判断返回True/False。 3. 增强操作符: ①S |= T:更新S,返回一个集合,包括S和T中使用元素; ②S-=T:更新S,返回一个集合,包括在S中但不在T中的元素; ③S&=T:更新S,返回一个集合,包括同时在S和T中的元素; ④S^=T:更新S,返回一个集合,包括S和T中的非相同元素。 4.集合的处理方法: S.add(x):在集合S中增加x元素 S.discard(x):移除x元素,当x不在S中时,程序不会报错; S.remove(x):移除x元素,当x不在S中时,程序会报错; S.clear():移除S中的所有元素; S.pop():随机返回S中的元素并更新S,若S中无元素,产生KeyError; S.copy():返回集合S的一个副本; len(S):返回S中的元素个数; x in S:判断x元素是否在集合S中,并返回True/False; set(x):将其他类型的变量转化为集合类型。 5.集合类型应用场景: ①包含关系比较 e.g: >>>”p”in {‘p’,’y’,123} True ②数据去重: >>>ls = [‘p’,’y’, ‘p’,’y’,123] >>>s = set(ls) {‘p’,’y’,123} Ⅱ序列数据类型及操作 1.定义: ①序列是具有先后顺序的一组关系; ②序列是一维元素向量,元素类型可不同; ③类似于数学元素序列:S0 , S1 ……Sn-1; ④元素间有序号引导,通过下标访问序列的特定元素。 2.序列处理函数及方法 ①通用操作符: x in s :判断x是否是S中元素,并且输出True/False x not in s:判断是否是S中元素,并且输出False/True S + T:连接两个序列S和T S*n 或n*S:将序列S复制n次 S[i]:索引,返回S中的第i个元素 S[i:j]或S[i:j:k]:对S进行切片并返回 ③通用函数和方法: len(S):返回序列S的长度 min(S):返回序列S中的最小元素 max(S):返回序列S中的最大元素 S.index(x)或S.index(x,i,j)返回序列S从i到j中第一次出现元素x的位置 S.count(x):返回S中出现x的总次数 3.元组数据类型: ①定义:-元组是序列类型的一种扩展。 -元组是一种序列类型,一旦创建就不能修改 -使用()或tuple()创建一个元组,元素间用“,”隔开 -可以使用或者不使用() e.g: >>>def func(): return 1,2 ②元组操作类型:元组继承了序列类型的全部通用操作 4. 列表数据类型及操作: ①定义:列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。列表中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 ②列表类型操作函数: ls[i] = x:替换ls中的第i个元素 ls[i:j:k] = lt:用列表lt替换ls切片后的所对应的元素拓展 del ls[i]:删除ls中的第i位元素 del ls[i:j:k]:删除列表ls中第i到j,以k为步长的元素 ls += lt:更新ls,将lt元素增加到ls中 ls*=n :更新列表ls,其元素重复n次 ③列表操作方法: list.append(obj):在列表末尾添加新的对象 list.count(obj):统计某个元素在列表中出现的次数 list.extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) list.index(obj):从列表中找出某个值第一个匹配项的索引位置 list.insert(index, obj):将对象插入列表 list.pop([index=-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 list.remove(obj):移除列表中某个值的第一个匹配项 list.reverse():反向列表中元素 list.sort( key=None, reverse=False):对原列表进行排序 list.clear():清空列表 list.copy():复制列表 [if !supportLists]5. [endif]序列类型应用场景 ①元组用于元素不改变的应用场景,更多用于固定搭配场景 ②列表更加灵活,是最常用的序列类型 ③最主要作用:表示一组有序数列,进而操控它们 Ⅲ字典数据类型及操作 1.定义:一种键(索引)和值(数据)的对应 2.字典类型是“映射”的体现: ①键值对:键是数据索引的扩展 ②字典是键值对的集合,键值对之间无序 ③使用{}或dict()创建 e.g: >>>d= {‘中国’:’北京’,’美国’:’华盛顿’,’法国’:’巴黎’} >>>d[‘中国’] ‘北京 3.字典处理函数及方法: del d[k]:删除字典d中键k对应的数据值 k in d:判断键k是否在字典d中,如果在返回True,否则False d.keys():返回字典d中所有的键信息 d.values():返回字典d中所有的值信息 d.items():返回字典d中所有的键值对信息 d.get(k, d.pop(k, d.popitem();随机从字典d中取出一个键值对,以元组形式返回 d.clear():删除所有的键值对 len(d):返回字典d中元素的个数 4.字典数据类型应用场景:最主要作用是利用键值对数据,进而操作它们。 Ⅳ实例:基本统计值计算 对相关题目解答流程: 1.问题描述:对于一组数据,计算并分析出它们的平均数,中位数,极差。 总个数:len() 求和:for ...in 平均值:求和/总个数 方差:各数据与平均数差的平方的和的平均数 中位数:排序后,奇数个找中间一个数,偶数个找中间两个数。 补充:sorted()函数可以对列表进行排序 思路:对于平均数,我们需要求得它的总个数与和;对于中位数,我们需要对总个数进行判断,个数为奇数取中间值,偶数取中间两数的平均数;对于方差,我们需要利用平均数,再用每个数减去平均数的平方,求得的和开平方即为方差。 代码: 输出结果: Ⅴ总结:通过对序列数据类型的学习,以后在对于不同数据类型的储存与使用将会更加方便,程序也会更加清晰。无论是多个元素无序组合,元素不能更改的集合;还是具有先后顺序的序列;亦或是键值对集合的字典,都值得我们认真学习并通过不断练习达到灵活使用的程度!