目录
摘要
本周的学习目标是承接上一周的列表学习,更深入学习列表的操作,包含了列表的for循环、利用range()函数创建数值列表,并且对数值列表进行简单的统计计算,比如检索最大值、最小值,再计算总和,最后利用切片去复制部分原列表,更加深入理解列表。
Abstract
This week I’ve practiced working with Python lists. I’ve learned to use for loops with lists, create number lists using range(), and do simple calculations like finding maximum/minimum values and sums. I’ve also practiced copying parts of lists through slicing. These exercises have helped me understand lists much better.
一、操作列表
在之前的学习中,学会了列表的基本操作,但这些都是小批量的列表,当遇到大容量的列表,处理就会有些不一样,就会用到for循环和if条件判断的知识。
1、列表的循环
下面使用for循环打印一个魔术师名单的所有名字:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
首先,像上周一样定义一个魔术师的列表,接下来,定义一个for循环。这段代码让Python从列表magcians中取出一个名字,并将其与变量magician相关联。最后,让Python打印前面赋给变量magician的名字。这样,对于列表中的每个名字,Python都将重复执行最后两行代码。我们可以这样解读代码:对于(for)列表magicians中的每位魔术师(magician),都打印(print)该魔术师的名字。输出很简单,就是该列表中所有的名字:
在编写for循环的时候,可以将依次与列表中的每个值相关联的临时变量指定任意名称。然而,选择描述单个列表元素的有意义的名称大有裨益。例如,对于小猫列表、小狗列表和一般性列表,像下面这样编写for循环的第一行代码是不错的选择:
for cat in cats:
for dog in dogs:
for item in items:
注意,在for循环这行代码末尾记得加冒号!
在for循环中,可以对每个元素执行任意操作。我们可以扩展前面的示例,为每位魔术师打印一条消息,指出他/她的表演太精彩了:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
下面的输出表明,为列表中的每位魔术师都打印了一条个性化消息:
下面再来添加一行代码,告诉每位魔术师,我们期待他/她的下一次表演:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see your next trick, {magician.title()}.\n")
两个函数调用print()都锁进了,因此它们都将针对列表中的每位魔术师执行一次。第二个函数调用print()中的换行符“\n”在每次循环结束后都插入一个空行,从而整洁地针对各位魔术师的消息编组:
for循环结束后怎么办呢?通常,我们一般提供总结性输出或者接着执行程序必须完成的其他任务。
在for循环后面,没有缩进的代码都只执行一次,不会重复执行。下面打印一条向全体魔术师致谢的消息,感谢他们精彩表演。为了在打印给各位魔术师的消息后,打印给全体魔术师的致谢消息,我们将相应的代码放在for循环后面,且不缩进:
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick!")
print(f"I can't wait to see your next trick, {magician.title()}.\n")
print("Thank you, everyone. taht was a great magic show!")
其运行结果为:
注意,在编写必须正确缩进的代码时,需要注意一些常见的缩进错误!
2、创建数值列表
列表非常射用于存储数值集合,而Python提供了很多工具,可以帮助你高效地处理数值列表。
2.1使用range()函数
Python 函数range()让你能够轻松地生成一系列的数。例如,可以像下面这样使用range()函数来打印一系列的数:
for value in range(1,5):
print(value)
上述代码好像应该打印1~5,但实际上并不会打印5:
在这个示例中,range()只打印1~4,这是编程语言中常见的差一行为的结果。range()函数让Python从指定的第一个值开始数,并在到达指定的第二个值时停止,因此输出不包含第二个值(这里为5)。
要打印1~5,需要使用range(1,6):
for value in range(1,6):
print(value)
这样,输出将从1开始、到5结束:
2.2使用range()创建数值列表
要创建数值列表,可使用list()函数将range()的结果转化为列表。如果将range()作为list()的参数,输出将是一个数值列表:
number = list(range(1,6))
print(number)
结果如下:
在使用range()函数时,还可以指定步长。为此,可以给这个函数指定第三个函数,Python将根据这个步长来生成数。
例如,下面的代码打印1~10的偶数:
even_numbers = list(range(2,11,2))
print(even_numbers)
在这个示例中,range()函数从2开始数,然后不断地加2,知道达到或超过终值(11)。因此输出如下:
使用range()可以函数几乎能够创建任意数值集合。例如,如何创建一个列表,其中包含前10个整数的平方呢?在Python中,用两个星号(**)来表示乘方运算。下面的代码演示了如何将前10个整数的平方加入到一个列表中:
squares = []
for value in range(1,11):
squares.append(value**2)
#也可以是 square = value**2
# squares.append(squre)
print(squares)
结果为:
2.3、对数值列表进行简单的统计计算
有几个Python函数可以帮助你处理数值列表。例如,你可以轻松地找出数值列表中的最大值、最小值和总和:
digits = [1, 2, 3, 4, 5, 6, 7, 8, 9,0]
min(digits)
# 0
max(digits)
# 9
sum(digits)
# 45
3、使用列表的一部分
在前面几节,我们学习了如何访问单个和整体的列表元素,那么我们如何访问列表的部分元素呢?列表的部分元素在Python中被称为切片
3.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从列表开头开始提取:
要让列表终止于列表末尾,也可以使用类似的语法。例如,如果要提取从第三个元素到列表末尾的所有元素,可以将起始索引指定为2,并省略终止索引:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])
Python将返回从第三个元素到列表末尾的所有元素:
3.2、遍历切片
如果要遍历列表的部分元素,可在for循环中使用切片。下面的示例将遍历前三名队员,并打印他们的名字:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:")
for player in players[:3]:
print(player.title())
该段代码的结果为:
3.3、复制列表
我们经常需要根据既有列表创建全新的列表。下面来介绍列表复制的工作原理,以及复制列表可提供极大帮助的一种情形。
要复制列表,可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引(即[:])。这让Python创建一个起始于第一个元素,终止于最后一个元素的切片,即复制了整个列表。
假设有一个列表包含你最喜欢的四个食物,而你想再创建一个列表,并再其中包含你的一个朋友喜欢的所有食物。巧的是,你喜欢的食品,这个朋友也都喜欢,因此通过复制来创建这个列表:
my_foods = ['pizza','falafel', 'carrot cake']
friend_foods = my_foods[:]
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
打印这两个列表,我们发现它们包含的食品相同:
二、总结
本周时间中,我首先学习了如何高效地处理列表中的元素,如何使用for循环遍历列表,Python如何根据缩进来确定程序的结构,以及如何避免一些常见的缩进错误。然后学习了如何创建简单的数值列表,以及对列表执行的一些操作。接着学习了如何通过切片来使用列表的一部分以及复制列表。