引言:给出一个数字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<T:判断子集关系,根据判断返回True/False;
⑥ 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, <default>):键k存在,则返回相应值,不在则返回<default>值
d.pop(k, <default>):键k存在,则取出相应值,不在则返回<default>值
d.popitem();随机从字典d中取出一个键值对,以元组形式返回
d.clear():删除所有的键值对
len(d):返回字典d中元素的个数
4.字典数据类型应用场景:最主要作用是利用键值对数据,进而操作它们。
Ⅳ实例:基本统计值计算
对相关题目解答流程:
1.问题描述:对于一组数据,计算并分析出它们的平均数,中位数,极差。
总个数:len()
求和:for ...in
平均值:求和/总个数
方差:各数据与平均数差的平方的和的平均数
中位数:排序后,奇数个找中间一个数,偶数个找中间两个数。
补充:sorted()函数可以对列表进行排序
思路:对于平均数,我们需要求得它的总个数与和;对于中位数,我们需要对总个数进行判断,个数为奇数取中间值,偶数取中间两数的平均数;对于方差,我们需要利用平均数,再用每个数减去平均数的平方,求得的和开平方即为方差。
代码:
输出结果:
Ⅴ总结:通过对序列数据类型的学习,以后在对于不同数据类型的储存与使用将会更加方便,程序也会更加清晰。无论是多个元素无序组合,元素不能更改的集合;还是具有先后顺序的序列;亦或是键值对集合的字典,都值得我们认真学习并通过不断练习达到灵活使用的程度!