映射类型和操作
映射类型是“键-值”数据项的组合,每个元素是一个键 值对,即元素是(key, value),元素之间是无序的。键值对 (key, value)是一种二元关系。在Python中,映射类型主要以字典(dict)体现。
列表类型
列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的 ,可自由对列表中数据项进行增加、删除或替换。列表没有长度限制,元素类型可以不同,使用非常灵活。
由于列表属于序列类型,所以列表也支持成员关系操作符 (in)、长度计算函数(len())、分片([])。列表可以同时使用正向递增序号和反向递减序号,可以采用标准的比较操作符(=、>)进行比较,列表的比较实际上是单个数据项的逐个比较。
列表用中括号([])表示,也可以通过list()函数将元组或字符串转化成列表。直接使用list()函数会返回一个空列表。
s=[1,'abc',12.3,[1,2,3],(4,5,6)]
for i in s:
print(i)
print(s[3][2])#列表嵌套的访问
使用list()可以将字符串和元组类型转换成列表类型
print(list(range(10)))#生成一个10个数的列表
print(list("abcdef"))
与整数和字符串不同,列表要处理一组数据,因此,列 表必须通过显式的数据赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象。(是指向一个列表地址,对指向的列表值进行操作会改变实际列表的值)
ls = [425, "BIT", 1024] #用数据赋值产生列表ls
lt = ls #lt是ls所对应数据的引用,lt并不包含真实数据
ls[0] = 0
print(lt)
#[0, 'BIT', 1024]
列表类型的操作
多增,少减,相等一一对应替换
s=[1,'abc',12.3,[1,2,3],(4,5,6)]
s[1:4]=[0,0,0,0]#多增,我们给了三个位置,而给了4个元素,会往列表中增加一个元素值
print(s)
#运行结果:[1, 0, 0, 0, 0, (4, 5, 6)]
s=[1,'abc',12.3,[1,2,3],(4,5,6)]
s[1:4]=[0,0]#少删,我们给了三个位置,而给了2个替换元素,会往列表中删除一个元素值
print(s)
#运行结果:[1, 0, 0, (4, 5, 6)]
Is[i:j:k]::
即从i开始替换,一直到 j-1 位置上的值,每次以k步长替换
Is.append(x):
在列表ls最后增加一个元素x,追加元素。
s=[]
n=input("请输入:")
while n!='':
s.append(n)#往列表中追加元素
n=input("请输入:")
print(s)
ls.reverse():列表ls中元素反转
注意:
会直接改变列表中的元素顺序
不能直接调用直接输出,需要先调用改变列表中的顺序,再进行相关操作
l=[1,2,3]
l.reverse()
print(l)
#输出结果:[3, 2, 1]
Is.sort():
列表Is元素排序,直接作用在Is列表上,默认从小到大排序;Is.sort(reverse=True):
将列表Is的元素从大到小排序,reverse默认为false(从小到大排序)
列表练习:
以最简单的统计问题为例,求解一组不定长数据的基本统 计值,即平均值、标准差、中位数。 一组数据表示为S=s0 , s1 , …, sn-1,其算术平均值、标准差分别表示为:
注意:
m:平均值
d: 标准差
中位数:当元素个数为单数时为元素个数/2,当元素个数为偶数时,为中间两个数的和/2
import math
def getNumber():
l = []
n = eval(input("请输入数值:"))
while n != 0:
l.append(n)
n = eval(input("请输入数值"))
return l
def average(l):
s = 0
for i in l:
s += i
return s / len(l)
def zws(l):
l.sort()
# 从小到大排序,作用再列表上
#l.sort(reverse=True)可以实现从大到小排序,默认为flase从小到大排序
if len(l) % 2 != 0:
return l[len(l) // 2]
else:
return (l[len(l) // 2 - 1] + l[len(l) // 2 - 1]) / 2
# 偶数元素个数的中位数:是中间两个数的和除以2
def bzc(l):
m = average(l)
s = 0
for i in l:
s += (i - m) ** 2
return math.sqrt(s / (len(l) - 1))
ll = getNumber()
av = average(ll)
zw = zws(ll)
bz = bzc(ll)
print("平均值是:{},中位数是:{},标准差是:{}".format(av, zw, bz))