python——第四章 操作列表

在本章中,你将学习如何遍历整个列表,这只需要几行代码,无论列表有多长。循环让你能够对列表的每个元素都采取一个或一系列相同的措施,从而高效地处理任何长度的列表,包括包含数千乃至数百万个元素的列表。

遍历整个列表

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!")

编写for 循环时,对于用于存储列表中每个值的临时变量,可指定任何名称。然而,选择描述单个列表元素的有意义的名称大有帮助。

创建数值列表

range函数让你能够轻松地生成一系列的数字

for value in range(1,5):
	print(value)

使用range() 创建数字列表

要创建数字列表,可使用函数list() 将range() 的结果直接转换为列表。如果将range() 作为list() 的参数,输出将为一个数字列表。 

numbers=list(range(1,6))
print(numbers)

使用函数range() 时,还可指定步长。例如,下面的代码打印1~10内的偶数:

numbers=list(range(2,11,2))
print(numbers)

在这个示例中,函数range() 从2开始数,然后不断地加2,直到达到或超过终值(11),因此输出如下:

下面的代码演示了如何将前10个整数的平方加入到一个列表中:

squares=[]
for value in range(1,11):
	square=value**2
	squares.append(square)
	
print(squares)

或者
squares=[]
for value in range(1,11):
	squares.append(value**2)
	
print(squares)

对数字列表执行简单的统计计算

函数min,max,sum可以找出数字列表的最小值,最大值和总和

squares=[]
for value in range(1,11):
	squares.append(value**2)
	
print(squares)
print(min(squares))
print(max(squares))
print(sum(squares))

列表解析

前面介绍的生成列表squares 的方式包含三四行代码,而列表解析让你只需编写一行代码就能生成这样的列表。列表解析将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 语句末尾没有冒号。

使用列表的一部分

在第3章中,你学习了如何访问单个列表元素。在本章中,你一直在学习如何处理列表的所有元素。你还可以处理列表的部分元素——Python称之为切片 。

切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数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[:3])

要让切片终止于列表末尾,也可使用类似的语法。

players=['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])

遍历切片

如果要遍历列表的部分元素,可在for 循环中使用切片。在下面的示例中,我们遍历前三名队员,并打印他们的名字:

players=['charles', 'martina', 'michael', 'florence', 'eli']
for player in players[0:3]:
	print(player)

复制列表

你经常需要根据既有列表创建全新的列表。下面来介绍复制列表的工作原理,以及复制列表可提供极大帮助的一种情形。

要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:] )。这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。

foods=['pizza','falafel','carrot cake']
friend_foods=foods[:]
print("My favorite foods are:")
print(foods)

print("\nMy friend's favorite foods are:")
print(friend_foods)

与前一个示例一样,我们首先将foods 的元素复制到新列表friend_foods 中。接下来,在每个列表中都添加一种食品.在列表my_foods 中添加'cannoli' ,而在friend_foods 中添加'ice cream' 。最后,打印这两个列表,核实这两种食品包含在正确的列表中。

foods=['pizza','falafel','carrot cake']
friend_foods=foods[:]
foods.append('cannoli')
friend_foods.append('ice cream')

print("My favorite foods are:")
print(foods)

print("\nMy friend's favorite foods are:")
print(friend_foods)

倘若我们只是简单地将foods 赋给friend_foods ,就不能得到两个列表。

foods = ['pizza', 'falafel', 'carrot cake']

#这行不通
friend_foods = foods
foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)

这里将foods 赋给friend_foods ,而不是将foods 的副本存储到friend_foods,这种语法实际上是让Python将新变量friend_foods 关联到包含 在foods 中的列表,因此这两个变量都指向同一个列表。

 

基本上,当你试图使用列表的副本时,如果结果出乎意料,请确认你像第一个示例那样使用切片复制了列表。

元组

列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的,这对处理网站的用户列表或游戏中的角色列表至关重要。然而,有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python将不能修改的值称为不可变的 ,而不可变的列表被称为元组 。

定义元组

元组看起来犹如列表,但使用圆括号而不是方括号来标识。定义元组后,就可以使用索引来访问其元素,就像访问列表元素一样。

dimensions=(200,50)
print(dimensions[0])
print(dimensions[1])

下面来尝试修改第一个元素的值,导致python返回类型错误

TypeError: 'tuple' object does not support item assignment

遍历元组中的所有值

像列表一样,也可以使用for循环遍历元组中的所有值

dimensions=(200,50)
for dimension in dimensions:
	print(dimension)

修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值。

dimensions=(200,50)
print("Original dimensions:")
for dimension in dimensions:
	print(dimension)

dimensions=(400,200)
print("Modified dimensions:")
for dimension in dimensions:
	print(dimension)

我们首先定义了一个元组,并将其存储的尺寸打印了出来;接下来,将一个新元组存储到变量dimensions 中;然后,打印新的尺寸。这次,Python 不会报告任何错误,因为给元组变量赋值是合法的:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值