- 集合类型
集合用{}表示,元素间用逗号分隔,集合里的元素无序且唯一。生成集合需要用{}或set()函数,建立空集合必须使用set()函数(因为空的{ }默认是用来生成字典类型的,所以生成空集合使用set()函数而不用空的大括号)。
在数学中集合有交、差、并、补四种运算。
对应在python中分别是:
- S | T :返回一个新集合,包括S和T中的所有元素(并)
- S - T :返回一个新集合,包括集合S但不在T中的元素(差)
- S & T:返回一个新集合,同时在集合S和T中的元素(交)
- S ^ T:返回一个新集合,包括集合S和T中的非相同元素(补)
除此之外,python中还有两个对集合判断的运算。
- S<=T或S<T:返回True/False,判断S和T的子集关系
- S>=T或S>T:返回True/False,判断S和T的包含关系
另外python提供四个增强操作符。
- S |= T 更新集合S,包括集合S和T中的所有元素
- S -= T 更新集合S,包括在集合S但不在集合T中的元素
- S &= T 更新集合S,包括在集合S和T中的元素
- S ^= T 更新集合S包括集合S和T中的非相同元素
- 集合的处理方法与函数
- S.add(x) 如果x不在集合S中,将x增加到S
- S.discard(x) 移除S中元素x,如果x不在集合S中,不报错
- S.remove(x) 移除S中元素x,如果x不在集合S中,产生KeyError异常
- S.clear() 移除S中所有元素
- S.pop() 随机返回S的一个元素,更新S,若S为空产生KeyError异常
- S.copy() 返回集合S的一个副本
- len(S) 返回集合S的元素个数
- x in S 判断S中的元素x,x在集合中返回True,否者返回False
- x not in S 与x in S相反
- set(x) 将其他类型变量x转变为集合类型
集合类型的典型应用:数据去重
- 序列类型
序列是具有先后关系的一组元素,序列中的元素可以相同,元素类型可以不同。序列是一个基类类型,一般不直接使用序列类型,而是使用其衍生类型。
- 序列的衍生类型:字符串类型、元组类型、列表类型。
- 序列类型关于序号的定义:正向递增序号和反向递减序号。与字符串相同
- 序列处理函数与方法:
- x in s 如果x是序列s的元素,返回True,否者返回False
- x not in s 与x in s相反
- s + t 连接两个序列s和t
- s * n 或 n * s 将序列s赋值n次
- s[i] 索引,返回s中的第i个元素,i是序列的序号。
- s[i:j] 或 s[i:j:k] 切片,返回序列s中第 i 到 j 以 k 为步长的元素子序列
- len(s) 返回序列s的长度
- min(s) 返回序列s的最小元素,s中的元素需要可比较
- max(s) 返回序列s中的最大元素,s中元素需要可比较
- s.index(x) 或s.index(x,i,j) 返回序列s从 i 开始到 j 位置中第一次出现元素x的位置
- s.count(x) 返回序列s中出现x的总次数。
以上函数或方法在序列及其衍生类型中均可使用。 - 元组类型:
元组的特点:一旦创建,不可修改。
使用()或tuple()创建,元素间用逗号分隔。继承了序列类型的全部通用操作。
元组类型的应用:数据保护 -
列表类型:
列表是一种序列类型,创建后可以随意被修改。使用[ ]或list()创建,元素间用逗号分隔。列表长度无限制,列表里的元素类型可以不同。
列表类型操作函数和方法:
- ls[i] = x 替换列表ls中第 i 个元素为x
- 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次
- ls.append(x) 在列表ls最后增加一个元素x
- ls.clear() 删除列表ls中所有元素
- ls.copy() 生成一个新列表,赋值ls中所有元素
- ls.insert(i,x) 在列表ls的第 i 位置增加元素x
- ls.pop(i) 将列表ls中第 i 个位置元素取出并删除该元素
- ls.remove(x) 将列表ls中出现的第一个元素x删除
- ls.reverse() 将列表ls中的元素反转
统计值实例:
#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 += num
return s/len(numbers)
def dev(numbers,mean):#计算方差
sdev = 0.0
for num in numbers:
sdev += (num - mean)**2
return pow(sdev / (len(numbers)-1),0.5)
def median(numbers):#计算中位数
sorted(numbers)#sorted(ls)可以用来对列表进行排序
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("平均值:{},方差:{:.2f},中位数:{}.".format(m,dev(n,m),median(n)))
- 字典类型
字典类型是映射的一种体现。(映射:是一种健(索引)和值(数据)的对应)
字典类型通过键值对进行数据索引的扩展,字典是键值对的集合,键值对之间无序,生成字典可采用{ }和dict()创建,键值对之间用冒号:表示。通过[ ]的索引形式获得字典变量中的值,也可以对字典中的值或健值对进行增加。
图片截自慕课网python语言程序设计
字典类型操作函数和方法:
- 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中元素的个数
d[key] 方式既可以索引,也可以赋值。
-
eg1:题目来自python123.io平台
#方法1:
n = input()
ls = []
for i in n:
if i not in ls:
ls.append(i)
num = 0
for j in ls:
num += int(j)
print(num)
#方法2:
n = input()
ss = set(n)
#字符串可以通过list()直接变成列表或通过set()直接变成集合
s = 0
for i in ss:
s += eval(i)
print(s)
-
eg2:
题目来自python123.io平台
#参考代码
s = input()
try:
d = eval(s)
e = {}
for k in d:
e[d[k]] = k
print(e)
except:
print("输入错误")


