文章目录
- [一. 遍历整个列表](#一. 遍历整个列表)
-
- [1. 在for循环中执行更多操作](#1. 在for循环中执行更多操作)
- [2. 在for循环结束后执行一些操作](#2. 在for循环结束后执行一些操作)
- [二. 避免缩进错误](#二. 避免缩进错误)
- [三. 创建数值列表](#三. 创建数值列表)
-
- [1. 使用函数range()](#1. 使用函数range())
- [2. 使用range()创建数字列表](#2. 使用range()创建数字列表)
- [3. 指定步长。](#3. 指定步长。)
- [4. 对数字列表执行简单的统计计算](#4. 对数字列表执行简单的统计计算)
- [5. 列表解析](#5. 列表解析)
- [五. 使用列表的一部分-切片](#五. 使用列表的一部分-切片)
-
- [1. 切片](#1. 切片)
- [2. 遍历切片](#2. 遍历切片)
- [3. 复制列表(浅拷贝与深拷贝)](#3. 复制列表(浅拷贝与深拷贝))
- [4. 元组](#4. 元组)
一. 遍历整个列表
py
if __name__ == '__main__':
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(magician)
1. 在for循环中执行更多操作
py
if __name__ == '__main__':
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick")
2. 在for循环结束后执行一些操作
在for循环后面,没有缩进的代码都只执行一次,不会重复执行。
py
if __name__ == '__main__':
magicians = ['alice', 'david', 'carolina']
for magician in magicians:
print(f"{magician.title()}, that was a great trick")
print("Thank you。")
二. 避免缩进错误
Python根据缩进来判断代码行与前一个代码行的关系。
简单地说,它要求你使用缩进让代码整洁而结构清晰。在较长的Python程序中,你将看到缩进程度各不相同的代码块,从而对程序的组织结构有大致的认识。
下面来看一些较为常见的缩进错误。
忘记缩进
对于位于for语句后面且属于循环组成部分的代码行,一定要缩进。
忘记缩进额外的代码行:
py
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()(见❶)无须缩进,因为它并非循环的组成部分。
cpp
message = "Hello Python world!"
❶ print(message)
遗漏了冒号
for语句末尾的冒号告诉Python,下一行是循环的第一行。
py
magicians = ['alice', 'david', 'carolina']
❶ for magician in magicians
print(magician)
如果不小心遗漏了冒号,如❶所示,将导致语法错误,因为Python不知道你意欲何为。
三. 创建数值列表
1. 使用函数range()
cpp
for value in range(1, 5):
print(value)
它不会打印5,只有1到4。
2. 使用range()创建数字列表
要创建数字列表,可使用函数list()将range()的结果直接转换为列表。
cpp
numbers = list(range(1, 6))
print(numbers)
3. 指定步长。
为此,可给这个函数指定第三个参数,看一个例子:
打印1~10的偶数:
cpp
even_numbers = list(range(2, 11, 2))
print(even_numbers)
创建一个列表,其中包含前10个整数(1~10)的平方
py
squares = []
for value in range(1,11):
❶ squares.append(value**2)
print(squares)
4. 对数字列表执行简单的统计计算
最小、最大、总和。
cpp
>>> digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
>>> min(digits)
0
>>> max(digits)
9
>>> sum(digits)
45
本节使用的数字列表都很短,但这里介绍的知识也适用于包含数百万个数的列表。
5. 列表解析
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素
cpp
squares = [value**2 for value in range(1, 11)]
print(squares)
五. 使用列表的一部分-切片
处理列表的部分元素,Python称之为切片。
1. 切片
要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数range()一样,Python在到达第二个索引之前的元素后停止。
cpp
players = ['charles', 'martina', 'michael', 'florence', 'eli']
❶ print(players[0:3])
# ['charles', 'martina', 'michael']
如果没有指定第一个索引,Python将自动从列表开头开始:
cpp
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])
如果要提取从第三个 元素到列表末尾的所有元素,可将起始索引指定为2,并省略终止索引:
cpp
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])
如果要输出名单上的最后三名队员,可使用切片players[-3:]:
cpp
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[-3:])
2. 遍历切片
遍历前三名队员,并打印他们的名字:
cpp
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. 复制列表(浅拷贝与深拷贝)
要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引([:])。
py
❶ 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,就不能得到两个列表。
py
my_foods = ['pizza', 'falafel', 'carrot cake']
# 这行不通:
❶ friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
# My favorite foods are:
# ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
# My friend's favorite foods are:
# ['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
这种语法实际上是让Python将新变量friend_foods关联到已与my_foods相关联的列表,因此这两个变量指向同一个列表。类似于浅拷贝。
4. 元组
Python将不能修改的值称为不可变的,而不可变的列表被称为元组。
定义元组
元组看起来很像列表,但使用圆括号而非中括号来标识。
定义元组后,就可使用索引来访问其元素,就像访问列表元素一样。
cpp
❶ dimensions = (200, 50)
❷ print(dimensions[0])
print(dimensions[1])
cpp
dimensions = (200, 50)
for dimension in dimensions:
print(dimension)
虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:
cpp
❶ dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
print(dimension)
❷ dimensions = (400, 100)
❸ print("\nModified dimensions:")
for dimension in dimensions:
print(dimension)
如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组。
参考:《Python编程:从入门到实践(第二版)》