Py 语言基础与应用 4_第1页
Py 语言基础与应用 4_第2页
Py 语言基础与应用 4_第3页
Py 语言基础与应用 4_第4页
Py 语言基础与应用 4_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【Python语言程序设计】第4章列表与元组

1.列表的声明和使用

2.元组的声明和使用

3.索引

4.求元素数量

5.脚本操作符

6.列表截取与拼接

7.列表推导式

8.嵌套列表

9.列表函数与方法

10.元组运算符

11.元组索引与截取

12.元组内置函数重点:1.列表的声明和使用

2.元组的声明和使用难点:1.列表&元组截取与拼接2.列表推导式知识要点知识点Python语言程序设计《案例:猜字游戏(记录游戏过程数据)》案例【猜字游戏(记录游戏过程数据)】对猜字游戏代码进行修改,记录游戏的过程数据。1234567891011121314151617181920212223242526importrandom

secret=random.randint(1,10)

guess=0

tries=0

logList=[]#定义一个列表用来记录用户猜字的过程

print("请你猜一猜从1到10,会是什么数字?")

print("你只有3次机会哦!")

whiletries<3:#提供3次猜字机会

guess=eval(input("请输入你猜的数字:"))

tries=tries+1

ifguess<secret:

print("太小了!!!!!!!!!!")

logList.append(['第'+str(tries)+'次',guess,'太小了'])

continue

elifguess>secret:

print("太大了!!!!!!!!!!")

logList.append(['第'+str(tries)+'次',guess,'太大了'])

continue

else:

print("恭喜你,猜对了!")

logList.append(['第'+str(tries)+'次',guess,'猜对了'])

break

ifguess!=secret:

print("很可惜,你猜错了!")

print("正确的数字为:"+str(secret))

print(logList)第5行:第三章案例2中在加入了一个列表logList,用来记录用户猜字的过程。此处声明了一个空列表。logList=[],此时my_list中没有任何元素。第13、17、21行:利用列表的append方法,向logList的尾部添加元素。这里添加的元素比较特殊,格式类似是[‘第1次’,3,’太大了']这样的列表。案例【猜字游戏(记录游戏过程数据)】列表可以作为一个方括号内的逗号分隔值出现。列表索引从0开始。列表可以进行截取、组合等。列表是一个比传统数组更好用的数据线型集合,它可以在随机位置任意添加不同类型的数据['Google','Baidu',1997,2000][1,2,3,4,5]['a','b','c','d']输出结果:123list1=['Google','Baidu',1997,2000]

list2=[1,2,3,4,5]

list3

=["a","b","c","d"]printPython语言程序设计《案例:猜字游戏扩展》案例【猜字游戏扩展】创建了一个游戏函数包Game.py,对这个游戏包进行优化1234567891011121314151617181920212223242526272829defGuessNumGame(*T):#*T表示任意多个无名参数,类型为tuple

importrandom

secret=random.randint(T[0],T[1])

guess=0

tries=0

logList=[]#定义一个列表用来记录用户猜字的过程

print("请你猜一猜从"+str(T[0])+"到"+str(T[1])+",会是什么数字?")

print("你只有"+str(T[2])+"次机会哦!")

whiletries<T[2]:#提供3次猜字机会

guess=eval(input("请输入你猜的数字:"))

tries=tries+1

ifguess<secret:

print("太小了!!!!!!!!!!")

logList.append(['第'+str(tries)+'次',guess,'太小了'])

continue

elifguess>secret:

print("太大了!!!!!!!!!!")

logList.append(['第'+str(tries)+'次',guess,'太大了'])

continue

else:

print("恭喜你,猜对了!")

logList.append(['第'+str(tries)+'次',guess,'猜对了'])

break

ifguess!=secret:

print("很可惜,你猜错了!")

print("猜测范围:"+str(T[0])+"到"+str(T[1]))

print("猜测机会:"+str(T[2])+"次")

print("正确的数字为:"+str(secret))

print(logList)第1行:*T表示任意多个无名参数,类型为元组tuple第3行:可以使用下标索引来访问元组中的值。T[0]表示元组的第1个值,T[1]表示元组的第2个值,T[2]表示元组的第3个值。

Game.py案例【猜字游戏扩展】testGame.py的第6行,进行函数的调用时,可以直接以多个参数逗号隔开的方式,将可变元组的值传递给函数。123456fromGameimport*#引入Game.py中的所有函数

#调用GuessNumGame猜字函数

x=eval(input("随机数的最小值:"))

y=eval(input("随机数的最大值:"))

z=eval(input("猜测次数:"))

GuessNumGame(x,y,z)testGame.pyPython语言程序设计【列表基础】知识点【访问列表中的值】1234aList=['Deris','Weng',1,2]

bList=[1,2,3,4,5,6,7]

print("aList[0]:",aList[0])

print("bList[1:5]:",bList[1:5])【例】使用下标索引来访问列表aList[0]:DerisbList[1:5]:[2,3,4,5]输出结果:知识点【列表的更新】1234aList=['Deris','Weng',1,2]

print("第三个元素为:",aList[2])

aList[2]=3

print("更新后的第三个元素为:",aList[2])【例】列表的更新第三个元素为:1更新后的第三个元素为:3输出结果:知识点【向列表指定位置插入元素】123aList=['Deris','Weng',1,2]

aList.insert(2,'Happy')#使用insert向索引2的位置插入元素‘黄金分割’

print("aList结果为:",aList)#列表中有5个元素【例】向列表插入元素aList结果为:['Deris','Weng','Happy',1,2]输出结果:知识点【删除或清空列表中的记录】1234aList=['Deris','Weng',1,2]

print("删除前的列表:",aList)

delaList[2]

print("删除第三个元素后的列表:",aList)【例】利用del语句删除列表中的元素删除前的列表:['Deris','Weng',1,2]删除第三个元素后的列表:['Deris','Weng',2]输出结果:知识点【删除或清空列表中的记录】123456aList=['Deris','Weng',1,2]

#列表本身不包含数据,而是包含变量:aList[0]到aList[3]

first=aList[0]#拷贝列表,创建新的变量引用,而不是数据对象的复制。

delaList[0]#del删除的是变量,而不是数据。

print(aList)

print(first)【例】del语句作用在变量上,而不是数据对象上['Weng',1,2]Deris输出结果:pop方法删除列表中的元素知识点【遍历列表、二级索引】123aList=['Deris','Weng',1,2]

foriinaList:

print(i)【例】列表的遍历DerisWeng12输出结果:知识点【遍历列表、二级索引】12aList=['Deris','Weng',[1,2,3]]

print(aList[2][0])【例】列表的二级索引1输出结果:Python语言程序设计【索引的使用】索引俗称下标。索引值从0开始,直到长度减1位置(例如对10个元素的列表,最大的索引值为[9])。

知识点【索引的使用】12aList=[1,2,3,4,5,6,7]

print("aList[3]:",aList[3])【例】使用下标索引来访问列表aList[3]:4输出结果:知识点【索引的使用】123x=[1,2,3,4,5,6]

print(x[6])#最大的索引值

print(x[-7])#最小的索引值【例】索引越界Traceback(mostrecentcalllast):File"indexError.py",line3,in<module>print(x[6])IndexError:listindexoutofrange输出结果:Python语言程序设计【求元素数量】函数len()求集合中的元素数量知识点【求元素数量】1234x=[1,2,3,4,5,6]

y=[]

print(len(x))

print(len(y))【例】函数len()60输出结果:Python语言程序设计【列表运算符】

+

*

的操作符+号用于组合列表,*号用于重复列表知识点【列表运算符】12345print([1,2,3,4]+[5,6])#列表的拼接

print(5in[1,2,3,4,5,6])#元素是否存在于列表中

print(['Weng']*3)#列表的重复倍增

forxin[1,2,3]:#列表的迭代

print(x,end="")【例】列表运算符[1,2,3,4,5,6]True['Weng','Weng','Weng']123输出结果:Python语言程序设计【列表截取与拼接】知识点【列表截取与拼接】1234aList=['Hello','Deris','Weng']

print(aList[2])#读取第三个元素

print(aList[-1])#从右侧开始读取倒数第一个元素

print(aList[1:])#输出从第二个元素开始后的所有元素【例】列表截取WengWeng['Deris','Weng']输出结果:知识点【列表截取与拼接】12x=['Hello','Deris','Weng']

print(x+[1,2,3])【例】列表拼接['Hello','Deris','Weng',1,2,3]输出结果:课后练习【列表截取与拼接】问题:

list1=[1,2,3,4,5,6,7]print("list1[0]:",list1[0])print("list1[1:5]:",list1[1:5])结果分别是什么?课后练习【列表截取与拼接】Python表达式结果描述len([1,2,3])长度[1,2,3]+[4,5,6]组合['Hi!']*4重复3in[1,2,3]元素是否存在于列表中3[1,2,3,4,5,6]['Hi!','Hi!','Hi!','Hi!']TruePython语言程序设计【列表推导式】知识点【列表推导式】12alist=[1,2,3,4,5,6,7,8,9]

newaList=[i**2foriinalist]【例】简单列表推导式[1,4,9,16,25,36,49,64,81]输出结果:列表推导式写法[表达式for变量in列表]或者[表达式for变量in列表if条件]1234alist=[1,2,3,4,5,6,7,8,9]

newaList=[]

foriinalist:

newaList.append(i**2)等同于知识点【列表推导式】12alist=[1,2,3,4,5,6,7,8,9]

print([i**2foriinalistifi>5])【例】带有if条件的列表推导式[36,49,64,81]输出结果:12345blist=[1,2,3,4,5,6,7,8,9]

newbList=[]

foriinblist:

ifx>5:

newbList.append(i**2)等同于Python语言程序设计【嵌套列表】知识点【嵌套列表】1234567a=['Hello','Deris','Weng']

n=[1,2,3]

x=[a,n]

print(x)

print(x[0])

print(x[0][1])

print(x[1][2])【例】嵌套列表[['Hello','Deris','Weng'],[1,2,3]]['Hello','Deris','Weng']Deris3输出结果:嵌套列表即在列表里创建其它列表Python语言程序设计【列表函数&方法】知识点【列表函数】1.列表函数函数描述len(list)计算列表元素个数max(list)返回列表元素最大值min(list)返回列表元素最小值list(seq)将元组转换为列表12345a=['Hello','Deris','Weng']

n=[1,2,3]

print(len(a))

print(max(a))

print(min(n))【例】列表函数的使用3Weng1输出结果:知识点【列表函数】1234a=['Hello','Deris','Weng']

n=[1,2,3]

x=[a,n]

print(min(x))【例】列表函数的错误使用Traceback(mostrecentcalllast):File"ListError.py",line4,in<module>print(min(x))TypeError:'<'notsupportedbetweeninstancesof'int'and'str'输出结果:知识点【列表方法】2.列表方法方法描述list.append(obj)在列表末尾添加新的对象list.count(obj)统计某个元素在列表中出现的次数list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)list.index(obj)从列表中找出某个值第一个匹配项的索引位置list.insert(index,obj)将对象插入列表list.pop(obj=list[-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值list.remove(obj)移除列表中某个值的第一个匹配项list.reverse()反向列表中元素知识点【列表方法】方法描述list.sort([func])对原列表进行排序list.clear()清空列表list.copy()复制列表list.sort([func])对原列表进行排序12345a=['Hello','Deris','Weng']

a.append('Happy')

print(a)

a.reverse()

print(a)【例】列表方法的使用['Hello','Deris','Weng','Happy']['Happy','Weng','Deris','Hello']输出结果:Python语言程序设计【元组基础】知识点【声明元组】1234tup1=(50)

print(type(tup1))#不加逗号,类型为整型

tup1=(50,)

print(type(tup1))#加上逗号,类型为元组【例】只包含一个元素的元组<class'int'><class'tuple'>输出结果:创建空元组tup1=()知识点【访问元组】1234tup1=('Deris','Weng',1,2)

tup2=(1,2,3,4,5,6,7)

print("tup1[0]:",tup1[0])

print("tup2[1:5]:",tup2[1:5])【例】访问元组tup1[0]:Deristup2[1:5]:(2,3,4,5)输出结果:知识点【修改元组】1234tup1=(12,34.56);

tup2=('abc','xyz')

tup3=tup1+tup2;

print(tup3)【例】修改元组(12,34.56,'abc','xyz')输出结果:123tup1=(12,34.56)

#以下修改元组元素操作是非法的。

tup1[0]=100【例】非法访问元组Traceback(mostrecentcalllast):File"tupError.py",line3,in<module>tup1[0]=100TypeError:'tuple'objectdoesnotsupportitemassignment输出结果:元组自身不能修改知识点【删除元组】12345tup=('Deris','Weng',1,2)

print(tup)

deltup;

print("删除后的元组tup:")

print(tup)【例】元组中的元素不允许删除,只可删除整个元组Traceback(mostrecentcalllast):('Deris','Weng',1,2)File"C:/delTup.py",line5,in<module>print(tup)NameError:name'tup'isnotdefined删除后的元组tup:输出结果:元组的特点正好可以“弥补”Python没有常量的“遗憾”,程序中不需要修改的数据都可以声明在元组中。问题:为什么要设计元组?提问【元组基础】Python语言程序设计【元组运算符】

+

*

的操作符+号用于组合,*号用于重复知识点【元组运算符】12345print(len((1,2,3)))#计算元组元素个数

print((1,2,3,4)+(5,6))#元组的拼接

print(5in(1,2,3,4,5,6))#元素是否存在于元组中

forxin(1,2,3):#元组的迭代

print(x,end="")【例】元组运算符3(1,2,3,4,5,6)True123输出结果:知识点【元组运算符】12print(('Happy!',)*3)#有逗号(,)的情况下实现元组的重复倍增

print(('Happy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论