集合类型及操作
集合类型定义
集合是多个元素的无序组合
集合类型与数学中的集合概念一致
集合元素之间无序,每个元素唯一,不存在相同元素
集合元素不可更改,不能是可变数据类型
集合是多个元素的无序组合
集合用大括号 {} 表示,元素间用逗号分隔
建立集合类型用 {} 或 set{}
示例
>>> A = {"python", 123, ("python",123)} # 使用{}建立集合
>>> print(A)
{123, 'python', ('python', 123)}
>>> B = set("pypy123") # 使用set()建立集合
>>> print (B)
{'3', 'p', 'y', '1', '2'}
>>> C = {"python", 123, "python",123} # 集合无序且不相同
>>> print (C)
{123, 'python'}
集合操作符
6个操作符
4个增强操作符
示例
集合处理方法
10个常用集合处理方法
示例
遍历组合数据类型(for in方式)
>>> A = {"p", "y", 123}
>>> for item in A:
print(item, end="")
123py
>>> A
{123, 'p', 'y'}
遍历组合数据类型(while方式)
>>> try:
while True:
print(A.pop(), end="")
except:
pass
123py
>>> A # 由于使用A.pop()集合处理方法来取出函数,所以最后运行完之后A的集合是一个空集合
set()
集合类型应用场景
包含关系的比较
>>> "p" in {"p", "y", 123}
True
>>> {"p", "y"} >= {"p", "y", 123}
False
>>> {"p", "y"} <= {"p", "y", 123}
True
数据去重: 集合类型所有元素无重复
>>> ls = ["p", "p", "y", "y", 123]
>>> s = set(ls) # 利用集合无重复元素的特点
>>> s
{123, 'p', 'y'}
>>> lt = list(s) # 将集合转换为列表
>>> lt
[123, 'p', 'y']
序列类型及操作
序列类型定义
序列是具有先后关系的一组元素
序列是一维元素向量,元素类型可以不同
类似数学元素序列:S0, S1 …,Sn-1
元素间由序号引导,通过下标访问序列的特定元素
序列是一个基类类型
序列类型包含:字符串类型,元组类型,列表类型
序号的定义
序列处理函数及方法
6个操作符
示例
>>> ls = ["python", 123, ".io"] # 列表取反
>>> ls[::-1]
['.io', 123, 'python']
>>> s = "python123.io" # 字符串取反
>>> s[::-1]
'oi.321nohtyp'
5个函数和方法
示例
>>> ls = ["python", 123, ".io"]
>>> len(ls)
3
>>> s = "python123.io"
>>> max(s)
'y'
元组类型及操作
元组类型定义
元组是序列类型的一种扩展
元组是一种序列类型,一旦创建就不能被修改
使用小括号()或 tuple()创建,元素间用逗号,分隔
可以使用或不使用小括号
def func():
return 1,2
示例
>>> creature = "cat", "dog", "tiger", "human"
>>> creature
('cat', 'dog', 'tiger', 'human')
>>> color = (0x001100, "blue", creature)
>>> color
(4352, 'blue', ('cat', 'dog', 'tiger', 'human'))
元组类型操作
元组继承序列类型的全部通用操作
元组继承了序列类型的全部通用操作
元组因为创建后不能修改,因此没有特殊操作
使用或不使用小括号
示例
>>> creature = "cat", "dog", "tiger", "human"
>>> creature[::-1]
('human', 'tiger', 'dog', 'cat')
>>> color = (0x001100, "blue", creature)
>>> color[-1][2]
'tiger'
列表类型及操作
列表类型定义
列表是序列类型的一种扩展,十分常用
列表是一种序列类型,创建后可以随意被修改
使用方括号 [ ] 或 list() 创建,元素间用逗号,分隔
列表中各元素类型可以不同,无长度限制
示例
>>> ls = ["cat", "dog", "tiger", 1024] # 使用[]创建列表
>>> ls
['cat', 'dog', 'tiger', 1024]
>>> lt = ls # 赋值仅传递引用,并没有创建列表
>>> lt
['cat', 'dog', 'tiger', 1024]
列表类型操作函数和方法
示例
>>> ls = ["cat", "dog", "tiger", 1024]
>>> ls[1:2] = [1, 2, 3, 4]
>>> ls
['cat', 1, 2, 3, 4, 'tiger', 1024]
>>> del ls[::3]
>>> ls
[1, 2, 4, 'tiger']
>>> ls*2
[1, 2, 4, 'tiger', 1, 2, 4, 'tiger']
示例
>>> ls = ["cat", "dog", "tiger", 1024]
>>> ls.append(1234)
>>> ls
['cat', 'dog', 'tiger', 1024, 1234]
>>> ls.insert(3, "human")
>>> ls
['cat', 'dog', 'tiger', 'human', 1024, 1234]
>>> ls.reverse()
>>> ls
[1234, 1024, 'human', 'tiger', 'dog', 'cat']
列表的12个功能
序列类型应用场景
序列类型应用场景:元素遍历
元组用于元素不改变的应用场景,更多用于固定搭配场景
列表更加灵活,它是最常用的序列类型
最主要作用:表示一组有序数据,进而操作它们
元素遍历
遍历组合数据类型(for in方式)
>>> A = {"p", "y", 123}
>>> for item in A:
print(item, end="")
123py
>>> A
{123, 'p', 'y'}
遍历组合数据类型(while方式)
>>> try:
while True:
print(A.pop(), end="")
except:
pass
123py
>>> A # 由于使用A.pop()集合处理方法来取出函数,所以最后运行完之后A的集合是一个空集合
set()
数据保护
如果不希望数据被程序所改变,转换成元组类型
>>> ls = ["cat", "dog", "tiger", 1024]
>>> lt = tuple(ls)
>>> lt
('cat', 'dog', 'tiger', 1024)
字典类型及操作
字典类型定义
字典类型定义
理解"映射"
映射是一种键(索引)和值(数据)的对应
字典类型是“映射”的体现
键值对:键是数据索引的扩展
字典是键值对的集合,键值对之间无序
采用大括号 {} 和dict()创建,键值对用冒号: 表示
{<键1>:<值1>,<键2>:<值2>,...,<键n>:<值n>}
字典类型的用法
在字典变量中,通过键获得值
<字典变量> = {<键1>:<值1>,...<键n>:<值n>}
<值> = <字典变量>[<键>]
<字典变量>[<键>] = <值> # []用来向字典变量中索引或增加元素
示例
>>> d = {"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
>>> d
{'美国': '华盛顿', '法国': '巴黎', '中国': '北京'}
>>> d["中国"]
'北京'
>>> de = {}; type(de) # 生成空的字典并返回变量de的类型
<class 'dict'>
字典处理函数及方法
字典类型操作函数和方法
示例
>>> d = {"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
>>> "中国" in d
True
>>> d.keys()
dict_keys(['美国', '法国', '中国'])
>>> d.values()
dict_values(['华盛顿', '巴黎', '北京'])
示例
>>> d = {"中国":"北京", "美国":"华盛顿", "法国":"巴黎"}
>>> d.get("中国","伊斯兰堡")
'北京'
>>> d.get("巴基斯坦","伊斯兰堡")
'伊斯兰堡'
>>> d.popitem()
('美国', '华盛顿')
字典功能
字典类型应用场景
映射的表达
映射无处不在,键值对无处不在
例如:统计数据出现的次数,数据是键,次数是值
最主要作用:表达键值对数据,进而操作它们
元素遍历
for k in d :
<语句块>
基本统计值计算
"基本统计值计算"问题分析
基本统计值
"基本统计值计算"实例讲解
#CalStatisticsV1.py
def getNum(): #获取用户不定长度的输入
nums = []
iNumStr = input("请输入数字(回车退出): ")
while iNumStr != "":
nums.append(eval(iNumStr))
iNumStr = input("请输入数字(回车退出): ")
return nums
def mean(numbers): #计算平均值
s = 0.0
for num in numbers:
s = s + num
return s / len(numbers)
def dev(numbers, mean): #计算方差
sdev = 0.0
for num in numbers:
sdev = sdev + (num - mean)**2
return pow(sdev / (len(numbers)-1), 0.5)
def median(numbers): #计算中位数
sorted(numbers)
size = len(numbers)
if size % 2 == 0:
med = (numbers[size//2-1] + numbers[size//2])/2
else:
med = numbers[size//2]
return med
n = getNum()
m = mean(n)
print("平均值:{},方差:{:.2},中位数:{}.".format(m, dev(n,m),median(n)))
"基本统计值计算"举一反三
技术能力扩展
获取多个数据:从控制台获取多个不确定数据的方法
分隔多个函数:模块化设计方法
充分利用函数:充分利用Python提供的内容函数