本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!