列表类型(sort,reverse,list(),append(),切片)、求中位数,平均数,标准差练习

映射类型和操作

        映射类型是“键-值”数据项的组合,每个元素是一个键 值对,即元素是(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))

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值