《Python编程从⼊门到实践》⼀、基础知识第四章操作列表4.1遍历整个列表
你经常需要遍历列表中的所有元素,对每个元素执⾏相同的操作。例如,在游戏中,可能需要将每个界⾯元素平移相同的距离;对于包含数字的列表,可能需要对每个元素执⾏相同的统计运算;在⽹站中,可能需要显⽰⽂章列表中的每个标题。需要对列表中的每个元素都执⾏相同的操作时,可使⽤Python中的for循环。c语言改错题要改哪里
假设我们有⼀个魔术师名单,需要将其中每个魔术师的名字都打印出来。为此,我们可以分别获取名单中的每个名字,但这种做法会导致多个问题。例如,如果名单很长,将包含⼤量重复的代码。另外,每当名单的长度发⽣变化时,都必须修改代码。通过使⽤for循环,可让Python去处理这些问题。
代码如下:
#coding:utf-8
java面试被问到项目中难点magicians=['alice','david','carolina']
for magician in magicians:
print (magician)
运⾏结果如下:
4.1.1在for循环中执⾏更多的操作
在for循环中,可对每个元素执⾏任何操作。下⾯来扩展前⾯的⽰例,对于每位魔术师,都打印⼀条消息,指出他的表演太精彩了:
#coding:utf-8
magicians=['alice','david','carolina']
for magician in magicians:
divo是什么牌子
print (magician.title()+",that was a great trick!")
运⾏结果如下:
在for循环中,想包含多少⾏代码都⾏。在代码⾏for magician in magicians后⾯,每个缩进的代码⾏都是循环的⼀部分,且将针对列表中的每个值都执⾏⼀次。因此,可对列表中的每个值执⾏任意次数的操作。
4.1.2在for循环结束后执⾏⼀些操作
在for循环后⾯,没有缩进的代码都只执⾏⼀次,⽽不会重复执⾏。下⾯来打印⼀条向全体魔术师致谢的消息,感谢他们的精彩表演。想要在打印给各位魔术师的消息后⾯打印⼀条给全体魔术师的致谢消息,需要将相应的代码放在for循环后⾯,且不缩进:
#coding:utf-8
magicians=['alice','david','carolina']
for magician in magicians:
print (magician.title()+",that was a great trick!")
print ("I can't wait to see your next trick, "+magician.title()+".\n")
print ("Thank you,everyone. That was a great magic show!")
运⾏结果如下:
4.2避免缩进错误
Python根据缩进来判断代码⾏与前⼀个代码⾏的关系。在前⾯的⽰例中,向各位魔术师显⽰消息的代码是for循环的⼀部分,因为他们缩进了。Python通过使⽤缩进让代码更易读;简单地说,它要求你使⽤缩进让代码整洁⽽结构清晰。在较长的Python程序中,你将看到缩进程度各不相同的代码块,这让你对程序的组织结构有⼤致的认识。
4.3创建数字列表
需要存储⼀组数字的原因有很多,例如,在游戏中,需要跟踪每个⾓⾊的位置,还可能需要跟踪玩家的⼏个最⾼得分。在数据可视化中,处理的⼏乎都是由数字(如温度、距离、⼈⼝数量、经度和纬度
等)组成的集合。
列表⾮常适合⽤于存储数字集合,⽽Python提供了很多⼯具,可帮助你⾼效地处理数字列表。明⽩如何有效地使⽤这些⼯具后,即便列表包含数百万个元素,你编写的代码也能运⾏得很好。
4.3.1使⽤函数range()
Python函数range()让你能够轻松地⽣成⼀系列数字。例如,可以像下⾯这样使⽤函数range()来打印⼀系列数字:
for value in range(1,5):
print (value)
运⾏结果如下:
在这个⽰例中,range()只是打印数字1~4,这是你在编程语⾔中经常看到的差⼀⾏为的结果。函数ran
ge()让Python从你指定的第⼀个值开始数,并在达到你指定的第⼆个值后停⽌,因此输出不包含第⼆个值(这⾥为5)
4.3.2使⽤range()创建数字列表
要创建数字列表,可使⽤函数list()将range()的结果直接转换为列表。如果将range()作为list()的参数,输出将为⼀个数字列表。
在前⼀节的⽰例中,我们打印了⼀系列数字。要将这些数字转换为⼀个列表,可使⽤list():
numbers=list(range(1,5))
print numbers
numpy的作用
运⾏结果如下:
使⽤range()时,还可指定步长。例如,下⾯的代码打印1~10内的偶数:
even_number=range(2,11,2)
print even_number
运⾏结果如下:
在这个⽰例中,函数range()从2开始数,然后不断地加2,直到达到或超过终值11。
下⾯的代码演⽰了如何将前10个整数的平⽅加⼊到⼀个列表中:
squares=[]
for value in range(1,11):
square=value**2
squares.append(square)
print (squares)
运⾏结果如下:
4.3.3对数字列表执⾏简单的统计计算
轻松出数字列表的最⼤值、最⼩值和总和:
4.3.4列表解析
列表解析将for循环和创建新元素的代码合并成⼀⾏ ,并⾃动附加新元素。例如:
squares=[value**2 for value in range(1,11)]
print squares
运⾏结果如下:
要使⽤这种语法,⾸先指定⼀个描述性的列表名,如squares;然后,指定⼀个左⽅括号,并定义⼀个表达式,⽤于⽣成你要存储到列表中的值。在这个⽰例中,表达式为value**2,它计算平⽅值。接下来,编写⼀个for循环,⽤于给表达式提供值,再加上右⽅括号。在这个⽰例中,for循环为for value in range(1,11),它将值1~10提供给表达式value**2。请注意,这⾥的for语句末尾没有冒号。
动⼿试⼀试
4-3 数到20:使⽤⼀个for循环打印数字1-20(含)
4-4 ⼀百万:创建⼀个列表,其中包含数字1-1000000,在使⽤⼀个foe循环将这些数字打印出来(如果输出的时间太长,按ctrl+c停⽌输出,或关闭输出窗⼝)
4-5 计算1-1000000的总和:创建⼀个列表,其中包含数字1-1000000,在使⽤min()和max()核实该列表确实是从1开始,到1000000结束的。另外,对这个列表调⽤函数sum(),看看Python将⼀百万个数字相加需要多长时间。
4-6 奇数:通过给函数range()指定第三个参数来创建⼀个列表,其中包含1-20的奇数;再使⽤⼀个for循环将这些数字都打印出来
4-7 3的倍数:创建⼀个列表,其中包含3-30内能被3整除的数字;再使⽤⼀个for循环使这个列表中的数字都打印出来
4-8 ⽴⽅:将同⼀个数字乘三次称为⽴⽅。请创建⼀个列表,其中包含前⼗个整数得⽴⽅,再使⽤⼀个for循环将这些⽴⽅数打印出来
4-9 ⽴⽅解析:使⽤列表解析⽣成⼀个列表,其中包含前⼗个整数得⽴⽅
4.4使⽤列表的⼀部分
4.4.1切⽚
要创建切⽚,可指定要使⽤的第⼀个元素的索引和最后⼀个元素的索引加1。与函数range()⼀样,Python在到达你指定的第⼆个索引前⾯的元素后停⽌。要输出列表中的前三个元素,需要指定索引0~3,这将输出分别为0,1和2的元素。
下⾯的列表处理的是⼀个运队成员列表:
players=['charles','martina','michael','florence','eli']
print (players[0:3])
运⾏结果如下:
如果你没有指定⼀个索引,Python将⾃动从列表开头开始:
players=['charles','martina','michael','florence','eli']
print (players[:4])
python入门教程编辑器运⾏结果如下:
如果想要输出列表中的最后三个队员,可使⽤切⽚players[-3:]:
players=['charles','martina','michael','florence','eli']
print players[-3:]
运⾏结果如下:
4.4.2遍历切⽚
如果要遍历列表的部分元素,可在for循环中使⽤切⽚。在下⾯的⽰例中,我们遍历前三名队员,并打印他们的名字:
palyers=['c','p','ge','jie','lk']
print ("Here are the first three players on my team:")
for player in palyers[0:3]:
print player.title()
运⾏结果如下:
在很多情况下,切⽚都很有⽤。例如,编写游戏时,你可以在玩家退出游戏时将其最终得分加⼊到⼀
个列表中。然后,为获取该玩家的三个最⾼得分,你可以将该列表按降序排列,再创建⼀个只包含前三个得分的切⽚。处理数据时,可使⽤切⽚来进⾏批量处理;编写Web应⽤程序时,可使⽤切⽚来分页显⽰信息,并在每页显⽰数量合适的信息。
4.4.3复制列表
要复制列表,可创建⼀个包含整个列表的切⽚,⽅法是同时省略起始索引和终⽌索引([:]),这让Python创建⼀个始于第⼀个元素,终⽌于最后⼀个元素的切⽚,即复制整个列表。
假如,假设有⼀个列表,其中包含你最喜欢的三种⾷品,⽽你还想创建另⼀个列表,在其中包含⼀位朋友喜欢的所有⾷品。不过,你喜欢的⾷品,这位朋友都喜欢,因此你可以通过复制来创建这个列表,为核实我们确实有两个列表,下⾯在每个列表中都添加⼀种⾷品,并核实每个列表都记录了相应⼈员喜欢的⾷品:
my_foods=['fruit','pizza','falafel','carrot cake']
friend_foods=my_foods[:]
print("My favorite foods are:")
print (my_foods)
print ("\nMy friend favorite foods are:")
print (friend_foods)
my_foods.append('cannoli')
friend_foods.append('ice cream')
print my_foods
print friend_foods
运⾏结果如下:
动⼿试⼀试
4-10 切⽚:选择你在本章编写的⼀个程序,在末尾添加⼏⾏代码,以完成如下任务。
打印消息“The first three items in the list are:”,再使⽤切⽚来打印列表的前三个元素
打印消息“Three items from the middle of the list are:”,再使⽤切⽚来打印列表中的三个元素
打印消息“The last three items in the list are:”,再使⽤切⽚来打印列表末尾得三个元素
4-11 你的⽐萨和我的⽐萨:在你完成练习4-1⽽编写得程序中,创建⽐萨列表得副本,并将其存储到变量friend_pizza中,再完成如下任务。
在原来的⽐萨列表中添加⼀种⽐萨
在核实friend_pizza中添加另⼀种⽐萨
4-12 使⽤多个循环:在本节中,为节省篇幅,程序foods.py的每个版本都没有使⽤for循环来打印列表。请选择⼀个版本的foods.py,在其中编写两个for循环,将各个⾷品列表都打印出来
c++strcpy头文件
4.5元组
列表⾮常适合⽤于存储在程序运⾏期间可能变化的数据集。列表是可以修改的,这对处理⽹站的⽤户列表或游戏中的⾓⾊列表⾄关重要。然⽽,有时候你需要创建⼀系列不可修改的元素,元组可以满⾜这种需求。Python将不能修改的值称为不可变的,⽽不可变的列表被称为元组。
4.5.1定义元组

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。