4.【Python基础】列表的基础操作

本文介绍了Python中列表的基础操作,包括使用for循环遍历列表、对列表执行统计计算、创建数字列表、使用列表解析以及切片和复制列表。重点讲解了range()函数在生成数字序列中的应用,以及如何利用列表解析进行简洁的列表生成。此外,还讨论了如何通过切片获取列表的部分元素以及如何复制列表。
摘要由CSDN通过智能技术生成

4.列表的基础操作

4.1 遍历整个列表

你经常需要遍历列表的所有元素,对每个元素执行相同的操作。例如,在游戏中,可能需要将每个界面元素平移相同的距离;对于包含数字的列表,可能需要对每个元素执行相同的统计运算;在网站中,可能需要显示文章列表中的每个标题。需要对列表中的每个元素都执行相同的操作时,可使用 Python 中的 for 循环。

使用 for 循环来打印姓名

name=['XH','LZP','ZRP']
for n in name:
	print(n)
	#XH
	#LZP
	#ZRP

命名了一个 name 的列表,通过 for 循环用变量 n 去依次
遍历列表中的内容,在依次打印出来。
刚开始使用循环时请牢记,对列表中的每个元素,都将执行循环指定的步骤,而不管列表包含多少个元素。如果列表包含一百万个元素,Python 就重复执行指定的步骤一百万次,且通常速度非常快。

4.1.1 在 for 循环中执行更多操作

将遍历的值首字母大写

name=['xh','lzp','zrp']
for n in name:
	print(n.title())

4.1.2 在 for 循环结束后执行一些操作

在 for 循环后面,没有缩进的代码都只执行一次,不会重复执行。

name=['xh','lzp','zrp']
for n in name:
	print(n.title())
print("name全部遍历完成")   #在for循环结束后输出

4.2 避免缩进错误

Python 根据缩进来判断代码行与前一个代码行的关系。在前面的示例中,向各位魔术师显示消息的代码行是 for 循环的一部分,因为它们缩进了。Python 通过使用缩进让代码更易读。简单地说,它要求你使用缩进让代码整洁而结构清晰。
开始编写必须正确缩进的代码时,需要注意一些常见的缩进错误。

4.2.1 忘记缩进

对于位于 for 语句后面且属于循环组成部分的代码行,一定要缩进。如果忘记缩进, Python 会提醒你:

magicians = ['alice', 'david', 'carolina'] for magician in magicians:print(magician)

函数调用 print()(见❶)应缩进却没有缩进。Python 没有找到期望缩进的代码块时,会让你知道哪行代码有问题。

File "magicians.py", line 3 
print(magician) 
	^ 
IndentationError: expected an indented block

通常,将紧跟在 for 语句后面的代码行缩进,可消除这种缩进错误。

4.3 创建数值列表

列表非常适合用于存储数字集合,而 Python 提供了很多工具,可帮助你高效地处理数字列表。

4.3.1 使用函数 range ()

Python 函数 range()让你能够轻松地生成一系列数。例如,可以像下面这样使用函数 range()来打印一系列数:

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

上述代码好像应该打印数1~5,但实际上不会打印5:

1
2
3
4

在这个示例中,range()只打印数1~4。这是编程语言中常见的差一行为的结果。函数 range()让 Python 从指定的第一个值开始数,并在到达你指定的第二个值时停止。因为它在第二个值处停止,所以输出不包含该值(这里为5)。
调用函数 range()时,也可只指定一个参数,这样它将从0开始。例如,range(6)返回数0~5。


for i in range(6):
	print(i)

输出

0
1
2
3
4
5

4 .3.2使用 range () 创建数字列表

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


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

输出

[1,2,3,4,5]

**使用函数 range () 还能指定步长。为此,可以给这个函数指定第三个参数,Python 将根据这个步长来生成。

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

函数 range ()从 2 开始数,然后不断加 2, 直到达到或超过终值(11),输出:

[2,4,6,8,10]

使用函数 range()几乎能够创建任何需要的数集。例如,如何创建一个列表,其中包含前10个整数(1~10)的平方呢?在 Python 中,用两个星号表示乘方运算。

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

首先,创建一个名为 squares 的空列表(见❶)。接下来,使用函数 range()让 Python 遍历1~10的值(见❷)。在循环中,计算当前值的平方,并将结果赋给变量 square(见❸)。然后,将新计算得到的平方值附加到列表 squares 末尾(见❹)。最后,循环结束后,打印列表 squares(见❺):

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

为了让代码更简洁,可不使用临时变量 square,而直接将每个计算得到的值附加到列表末尾:

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

❶处的代码与 squares.py 中❸处和❹处的代码等效。在循环中,计算每个值的平方,并立即将结果附加到列表 squares 的末尾。
创建更复杂的列表时,可使用上述两种方法中的任何一种。有时候,使用临时变量会让代码更易读;而在其他情况下,这样做只会让代码无谓地变长。你首先应该考虑的是,编写清晰易懂且能完成所需功能的代码,等到审核代码时,再考虑采用更高效的方法。

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

有专门用于处理数字列表的 Python 函数。例如,你可以轻松地找出数字列表的最大值、最小值和总和:

>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>>  min(digits) 
0 
>>> max(digits) 
9 
>>> sum(digits) 
45

最小值 min (); 最大值 max (); 总和 sum ()

4.3.4 列表解析

前面介绍的生成列表 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提供给表达式 value2。请注意,这里的 for 语句末尾没有冒号。

[1,4,9,16,25,36,49,64,81,100]

4 .4使用列表

你还可以处理列表的部分元素,Python 称之为切片。

4.4.1 切片

要创建切片,可指定使用的第一个元素和最后一个元素的索引。与函数 range () 一样,Python 在到达第二个索引之前的元素后停止。要输出列表中的前三个元素,需要指定索引0和3,这将返回索引为0、1和2的元素。

name=['xh','zrp','lzp','zyf']
print(name[0:2])  #对列表进行切片

只输出前 2 个值, 下标值 0~1,2 不会进行操作

['xh', 'zrp']

如果没有指定第一个索引,Python 将自动从列表开头开始:

name=['xh','zrp','lzp','zyf']
print(name[:3])  #对列表进行切片

输出

['xh','zrp', 'lzp']

要让切片终止于列表末尾,也可使用类似的语法。例如,如果要提取从第三个元素到列表末尾的所有元素,可将起始索引指定为:

省略终止索引

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

Python 将返回从第三个元素到列表末尾的所有元素:

['michael', 'florence', 'eli']

无论列表多长,这种语法都能够让你输出从特定位置到列表末尾的所有元素。
负数索引返回离列表末尾相应距离的元素,因此你可以输出列表末尾的任意切片。例如,如果要输出名单上的最后三名队员,可使用切片 players[-3:]:

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

上述代码打印最后三名队员的名字,即便队员名单长度发生变化,也依然如此。
__*注意:可在表示切片的方括号内指定第三个值。这个值告诉 Python 在指定范围内每隔多少元素提取一个。

4.4.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())

❶处的代码没有遍历整个队员列表,而只遍历前三名队员:

Here are the first three players on my team: 
Charles
Martina
Michael

4.4.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)

首先,创建一个你喜欢的食品列表,名为 my_foods(见❶)。然后创建一个名为 friend_foods 的新列表(见❷)。在不指定任何索引的情况下从列表 my_foods 中提取一个切片,从而创建这个列表的副本,并将该副本赋给变量 friend_foods。打印这两个列表后,我们发现其包含的食品相同:

My favorite foods are: 
['pizza', 'falafel', 'carrot cake'] 
My friend's favorite foods are: 
['pizza', 'falafel', 'carrot cake']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值