第三章列表应用-列表与随机数random库
发布日期:2021-06-29 11:32:29 浏览次数:2 分类:技术文章

本文共 8083 字,大约阅读时间需要 26 分钟。

列表与随机数random库

序列是 Python 中最基本的数据结构。

序列中的每个值都有对应的位置值,称之为索引,第一个索引是 0,第二个索引是 1,依此类推。

Python 有 6 个序列的内置类型,但最常见的是列表和元组。

列表都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python 已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

列表常用操作

  • 1. 初始化列表
#初始化ls0为空列表ls0=[]#初始化ls1列表,含4个列表元素ls1=[90,93,85,96]#初始化ls3列表,含2个列表元素,每个列表元素为列表类型ls3=[["李明",93,85,96],["王军",83,95,91]]
  • 2. 求列表长度
ls2=[90,93,85,96]#求ls2的长度,x的值为4x=len(ls2)print(x)

4

  • 3. 访问列表元素
    列表中的元素,可以通过列表名[索引号]来进行访问,索引号从0开始。
ls2=[90,93,85,96]#将ls2的第0号元素值90赋值给变量aa=ls2[0]#将ls2的第1号元素值93赋值给变量ab=ls2[1]#将ls2的最后一个元素值96赋给变量cc=ls2[-1]#将ls2的倒数第二个元素值85赋给变量dc=ls2[-2]#计算ls2的0~2号元素的和,将其结果赋值给变量sumsum=ls2[0]+ls2[1]+ls2[2]#累加ls2的所有元素,将其结果赋值给变量sumtotal1sumtotal1=0for x in ls2:    sumtotal1+=x#累加ls2除最后一个元素的其他所有元素,将其结果赋值给变量sumtotal2sumtotal2=0for i in range(len(ls2)-1):    sumtotal2+=ls2[i]print("sum:{}\nsumtotal1:{}\nsumtotal2:{}".format(sum,sumtotal2,sumtotal2))

sum:268

sumtotal1:268
sumtotal2:268

  • 4. 修改和添加列表元素
ls2=[90,93,85,96]#将ls2的第1号元素值由93修改为95ls2[1]=95#在ls2列表末尾添加新元素88ls2.append(88)print(ls2)

[90, 95, 85, 96, 88]

  • 5. 判断某个数据是否是列表
ls2=[90,93,85,96]#判断95是否为ls2的元素,x的值为False,y的值为Truex=95 in ls2y=95 not in ls2print(x,y)

False True

  • 6. 列表排序
ls2=[90,93,85,96]#ls2中的元素从小到大进行排序,列表元素顺序为85,90,93,96ls2.sort()print("从小到大进行排序:",ls2)#ls2中的元素大从到小进行排序,列表元素顺序为,96,93,90,85ls2.sort(reverse=True)print("从大从到小进行排序:",ls2)

从小到大进行排序: [85, 90, 93, 96]

从大从到小进行排序: [96, 93, 90, 85]

  • 7. 列表切片
ls2=[90,93,85,96,97,91,92]#将ls2的1-3号(即切片区域含头不含尾)元素切给ls3,ls3的元素为93,85,96ls3=ls2[1:4]print("ls2:",ls2,"\nls3:",ls3)

ls2: [90, 93, 85, 96, 97, 91, 92]

ls3: [93, 85, 96]

列表练习

  • 1.代码补全(#注释部分为题目)
list0=[55,78,97,98,69,70]list2=['you','need','python']#对list0降序排列并输出list0.sort(reverse=True)print("list0降序:",list0)#初始化list1为空ls1=[]#将list0中的奇数复制到list1中list1=list(filter(lambda x:(x%2!=0),list0))#使用lambda过滤器#list1=[num for num in list0 if num%2!=0]#方法2print("list0的奇数:",list1)#统计list1中的元素个数,存放到变量numtotal中numtotal=len(list1)print("list1的元素个数:",numtotal)#将list2的元素'Python'改为python3list2[2]='python3'print("list2:",list2)#将list0的3~5号元素切片到list3中list3=list0[3:6]print("list0:",list0,"\nlist0的3~5号元素:",list3)

list0降序: [98, 97, 78, 70, 69, 55]

list0的奇数: [97, 69, 55]
list1的元素个数: 3
list2: [‘you’, ‘need’, ‘python3’]
list0: [98, 97, 78, 70, 69, 55]
list0的3~5号元素: [70, 69, 55]

  • 2.任务应用

#初始化空列表ls

#从键盘输入若干数字,添加到列表,输入-1退出(不添加到列表)
#统计并输出ls的元素个数,ls的平均值
#降序输出值为偶数的列表元素,输出格式:每个元素占位宽度为10,右对齐,每行打印多个元素

#初始化空列表lsls=[]#从键盘输入若干数字,添加到列表,输入-1退出(不添加到列表)num=input("请输入数字(输入-1退出):")while num!="-1":    ls.append(eval(num))    num=input("请输入数字(输入-1退出):")print(ls)#统计并输出ls的元素个数,ls的平均值sum=0for x in ls:    sum+=xprint("ls的元素个数:",len(ls),"\nls的平均值:",sum/len(ls))#降序输出值为偶数的列表元素,输出格式:每个元素占位宽度为10,右对齐,每行打印多个元素ls.sort(reverse=True)#降序输出ls=list(filter(lambda x:(x%2==0),ls))x=0for i in ls:    print("{0:>10}".format(i),end="")
请输入数字(输入-1退出):3请输入数字(输入-1退出):5请输入数字(输入-1退出):2请输入数字(输入-1退出):8请输入数字(输入-1退出):1请输入数字(输入-1退出):9请输入数字(输入-1退出):0请输入数字(输入-1退出):4请输入数字(输入-1退出):6请输入数字(输入-1退出):7请输入数字(输入-1退出):-1[3, 5, 2, 8, 1, 9, 0, 4, 6, 7]ls的元素个数: 10 ls的平均值: 4.5         8         6         4         2         0

random库常用函数

random库是Python自带标准库,用于生成随机数。要使用random库中的函数,需要用以下命令导入

from random import *

1.生成[10,100)之间的随机整数

ranadrange(10,100)

2.生成[10,100]之间的随机整数

randint(10,100)

黑白球抽奖项目实战

  • 项目分析
  • 根据黑白球抽奖规则,需要将投注的一组号码(4个从小到大的黑色球号码,1个白色球)与开奖号码(4个按生成先后顺序的黑色球号码,1个白色球号码)按中奖规则进行对比,判断其中奖情况。
  • 可以将投注号码和开奖号码分别存放在列表mynum和lotterynum中,通过对列表mynum和lotterynum的比较来判断其中奖情况。
  • 黑白球抽奖控制台界面如下所示:

此次开出的中奖号码为:

黑色球:11 4 6 7 ,白色球:6
你机选投注号码为:
黑色球:1 4 5 7 ,白色球:4
恭喜你,中奖等级为六等奖,请及时兑奖!

  • 项目实现
# 1.项目初始化from random import randint      #导入包,定义相关变量mynum=[]                        #存放投注号码lotterynum=[]                   #存放开奖号码blackok=0                       #记录投注黑色球与开奖号码匹配个数whiteok=False                   #标识投注白色球是否与开奖号码匹配prizerank=""                    #存放中奖信息# 2.机选投注x=0                             #x用于记录已经成功生成的投注黑球个数while(x<4):                     #当x<4时循环    num=randint(1,11)           #随机生成1个投注黑色球号num(1~10)    if num not in mynum:        #num在mynum列表中存在吗?        mynum.append(num)       #不存在,将num添加到列表mynum中,x+=1        x+=1mynum.sort()                    #列表mynum从小到大排序num=randint(1,6)                #随机生成1个投注白色球号num(1~5)mynum.append(num)               #将num添加到列表mynum中# 3.开奖号码x=0                             #x用于记录已成功生成的开奖黑色球个数while(x<4):                     #当x<4时循环    num=randint(1,11)           #随机生成1个投注黑色球号num(1~10)    if num not in lotterynum:   #num在lotterynum列表中存在吗?        lotterynum.append(num)  #不存在,将num添加到列表lotterynum中,x+=1        x+=1num=randint(1,6)                #随机生成1个投注白色球号num(1~5)lotterynum.append(num)          #将num添加到列表lotterynum中# 4.中奖匹配blacklotterynum=lotterynum[0:4] #对开奖号码列表切片,获得开奖号码的黑色球列表blacklotterynumfor i in range(len(mynum)-1):   #迭代投注号码中的黑色球x(mynum列表中的0~3号元素):    x=mynum[i]    if x in blacklotterynum:    #x在开奖黑色列表blacklotterynum中存在吗?        blackok+=1              #存在,blackok+=1if mynum[-1]==lotterynum[-1]:   #如果投注白色球mynum[4]与开奖白色球lotterynum[4]相同    whiteok=True                #标识白色球匹配    # 5.中奖与兑奖if(blackok==4 and whiteok):     #如果黑色球匹配4个并且白色球匹配:    prizerank="一等奖"          #将"一等奖"信息存入prizerankelif(blackok==4):               #否则,如果黑色球匹配4个并且白色球不匹配:    prizerank="二等奖"          #将"二等奖"信息存入prizerankelif(blackok==3 and whiteok):   #否则,如果黑色球匹配3个并且白色球匹配:    prizerank="三等奖"          #将"三等奖"信息存入prizerankelif(blackok==3):               #否则,如果黑色球匹配3个并且白色球不匹配:    prizerank="四等奖"          #将"四等奖"信息存入prizerank  elif(blackok==2 and whiteok):   #否则,如果黑色球匹配2个并且白色球匹配:    prizerank="五等奖"          #将"五等奖"信息存入prizerankelif(blackok==2):               #否则,如果黑色球匹配2个并且白色球不匹配:    prizerank="六等奖"          #将"六等奖"信息存入prizerankelse:                           #否则    prizerank="未中奖"          #将"未中奖"信息存入prizerankprint("此次开出的中奖号码为:")print("\t黑色球:",end="")for i in range(len(lotterynum)-1):    print(lotterynum[i],end=" ")print(",白色球:{}".format(lotterynum[-1]))print("你机选投注号码为:")print("\t黑色球:",end="")for i in range(len(mynum)-1):    print(mynum[i],end=" ")print(",白色球:{}".format(mynum[-1]))if(prizerank=="未中奖"):        #如果未中奖,打印:    print("很遗憾,你没有中奖,继续努力!")else:                           #如果中奖,按如下格式打印中奖信息:    print("恭喜你,中奖等级为{},请及时兑奖!".format(prizerank))

总结与提高——列表、random随机库、元组

1. 创建列表

只要把逗号分隔的不同的数据项使用方括号括起来即可。

list1=['python 3','软件技术',2019,95]list2=[]

2. 添加列表元素

  • append()方法用于向列表结尾添加元素
  • insert()方法用于在指定位置插入元素
  • extend()方法用于将一个列表添加到该列表的尾部
list1=['python 3','软件技术',2019,95]list2=[93]#方式一:向list2结尾添加元素'kevin',list2=[93,'kevin']list2.append('kevin')print(list2)#方式二:在1号索引位置插入元素'lewis',list2=[93,'lewis',kevin']list2.insert(1,'lewis')print(list2)#方式三:扩展列表,list1=['python 3','软件技术',2019,95,'lewis','kevin']list1.extend(list2)print(list1)

[93, ‘kevin’]

[93, ‘lewis’, ‘kevin’]
[‘python 3’, ‘软件技术’, 2019, 95, 93, ‘lewis’, ‘kevin’]

3. 删除列表元素

remove()方法用于删除第一次出现的元素,pop()方法用于删除指定位置的元素,del语句用于删除指定元素或列表

list1=['python 3',95,'软件技术',2019,95,96,95]print(list1)#删除第一次出现的元素,list1=['python 3','软件技术',2019,95,96,95]list1.remove(95)print(list1)#删除并返回最后一个元素,list1=['python 3','软件技术',2019,95,96],x=95x=list1.pop()print(list1)#删除并返回指定索引位置的元素,list1=['python 3','软件技术',2019,95,96],x=95x=list1.pop(-2)print(list1)#删除指定元素,list1=['软件技术',2019,96]del list1[0]print(list1)#删除整个列表,list1不再存在del list1

[‘python 3’, 95, ‘软件技术’, 2019, 95, 96, 95]

[‘python 3’, ‘软件技术’, 2019, 95, 96, 95]
[‘python 3’, ‘软件技术’, 2019, 95, 96]
[‘python 3’, ‘软件技术’, 2019, 96]
[‘软件技术’, 2019, 96]

4. 列表反转

reverse()方法用于反转列表中的元素

ls2=[90,93,85,96]#反转列表,列表元素顺序为96,85,93,90ls2.reverse()print(ls2)

[96, 85, 93, 90]

5. 列表切片

  • 列表切片的通用格式为:列表名[start:end:step]
  • start表示起始索引位置(从列表开始向右,位置为0,1,…)
  • end表示结束索引位置(从列表末尾向左,位置为-1,-2,…)
  • step表示步长
  • 注意切片的结果不包含结束索引位置,即不包含最后的一位。此外,end=-1表示列表最后一个位置的索引位置
ls1=[1,2,3,4,5,6]#省略全部,代表截取全部内容,可以用来进行列表复制,ls2=[1,2,3,4,5,6]ls2=ls1[:]print("[:]",ls2)#从开始到结束位置,每次增加1,截取,不包含结束索引位置,ls2=[2,3,4,5]ls2=ls1[1:-1:1]print("[1:-1:1]",ls2)#省略起始位置的索引步长。默认起始位置重头开始,默认步长为1,ls2=[1,2,3]ls2=ls1[:3]print("[:3]",ls2)#从位置0到最后一个位置,每3个去一个值,ls2=[1,4]ls2=ls1[0:-1:3]print("[0:-1:3]",ls2)#反向取值,ls2=[6,5,4,3,2,1]ls2=ls1[::-1]print("[::-1]",ls2)#从位置4到位置1反向取值,ls2=[5,4,3]ls2=ls1[4:1:-1]print("[4:1:-1]",ls2)
[:] [1, 2, 3, 4, 5, 6][1:-1:1] [2, 3, 4, 5][:3] [1, 2, 3][0:-1:3] [1, 4][::-1] [6, 5, 4, 3, 2, 1][4:1:-1] [5, 4, 3]

转载地址:https://blog.csdn.net/ZYJ_OvO/article/details/115279143 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:信息安全技术之数字签名_公钥密码_非对称加密
下一篇:Python基础知识作业1

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月29日 17时13分51秒