3.1 遍历整个列表
你经常需要遍历列表的所有元素, 对每个元素执行相同的操作. 可以使用 python 中的 for 循环.
- magicians.py
- magicians = ['alice','david','carolina']
- for magician in magicians:
- print(magician)
- >>>alice
- david
- carolina
深入研究循环
在 magicians.py 中使用的简单循环中, python 首先读取其中的一行代码:
for magician in magicians:
这行代码让 python 获取列表 magicians 中的第一个值('alice'), 并将其存储到变量 magician 中. 接下来, python 读取下一行代码:
print(magician)
它让 python 打印 magician 的值 -- 依然是'alice'. 鉴于该列表还包含其他值, python 返回到循环的第一行:
for magician in magicians:
python 获取列表中的下一个名字 --'david', 并将其存储到变量 magician 中, 再执行循环体代码. 依此往复, 直到 for 循环后面没有其他的代码. 另外, 对于用于存储列表中每个值的临时变量, 可以指定任何名称.
3.2 创建数值列表
使用函数 range()
函数 range()让你能轻松生成一系列数字.
- for value in range(1,5):
- print(vale)
- 1
- 2
- 3
- 4
函数 range()让 python 从你指定的第一个值开始数, 并在到达你指定的第二个值后停止, 因此输出不包含第二个值. 使用 range()时如果不符合预期, 尝试 + 1 或 - 1.
使用 range()创建数字列表
要创建数字列表, 可使用函数 list() 将 range() 的结果直接转换为列表.
- numbers = list(range(1,6))
- print(numbers)
- >>>[1,2,3,4,5]
使用函数 range()时, 还可指定步长. 如要打印 1~10 内的偶数.
- even_numbers = list(range(2,11,2))
- print(even_numbers)
- >>>[2,4,6,8,10]
函数 range()从 2 开始, 然后不断加 2.
使用函数 range()几乎能够创建任何需要的数字集. 例如, 创建一个包含前 10 个整数的平方列表. 在 python 中, 两个星号 (**) 表示乘方运算.
- squares = []
- for value in range(1,11):
- squrare = value**2
- squares.append(squrare)
- print(squares)
- [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
还可以不使用临时变量, 直接将每个计算得到的值附加到列表末尾:
- squares = []
- for value in range(1,11):
- squares.append(value**2)
- print(squares)
对数字列表执行简单的统计计算
- digits = [1,2,3,4,5,6,7,8,9,0]
- min(digits)
- max(digits)
- sum(digits)
列表解析
列表解析将 for 循环和创建新元素的代码合并成一行, 并自动附加新元素
- squares = [value**2 for value in range(1,11)]
- print(squares)
要使用这种语法, 首先指定一个描述性的列表名, 如 squares; 然后, 指定一个左方括号, 并定义一个表达式, 用于生成你要存储到列表中的值. 在这个示例中, 表达式为 value**2. 接下来编写一个 for 循环, 用于给表达式提供值, 再加上右括号.
3.3 使用列表的一部分
切片
要创建切片, 可指定要使用的第一个元素的索引和最后一个元素的索引加 1. 要输出列表中的前 3 个元素, 需要指定索引 0~3, 这将输出 0,1,2.
- players = ['a','b','c','d','e']
- print(players[0:3])
- >>>['a', 'b', 'c']
列如你要取列表第 2 到 4 个元素, 可以指定索引为 1,4. 如果没有指定第一个索引, python 将自动从列表头开始提取: 同理, 不指定最后一个索引, python 将自动从第一个索引到列表末尾.
负数索引返回离列表末尾相应距离的元素. 例如, 如果你要输出最后 3 个元素, 可使用切片 players[-3:].
- players = ['a','b','c','d','e']
- print(players[-3:])
- >>>['c', 'd', 'e']
遍历切片
如果要遍历列表中的部分元素, 可再 for 循环中使用切片.
- players = ['a','b','c','d','e']
- for player in players[:3]:
- print(player.title())
- A
- B
- C
复制列表
要复制列表, 可创建一个包含整个列表的切片.
- my_love = ['a','b','c','d','e']
- friend_love = my_love[:]
- print(my_love)
- print(friend_love)
- ['a', 'b', 'c', 'd', 'e']
- ['a', 'b', 'c', 'd', 'e']
3.4 元组
python 将不能修改的值称为不可变的, 而不可变的列表称为元组.
定义元组
例如, 有一个大小不能变的矩形, 可将其长宽存储在一个元组中, 从而确保它们不可修改.
- dimensions = (200,50)
- print(dimensions[0])
- print(dimensions[1])
- 200
- 50
遍历元组中的所有值
像列表一样, 元组也可以用 for 循环来遍历.
- dimensions = (200,50)
- for dimension in dimensions:
- print(dimension)
- 200
- 50
修改元组变量
虽然不能修改元组的元素, 但可以给存储元组的变量赋值. 因此要修改矩形的尺寸, 可重新定义整个元组
- dimensions = (200,50)
- for dimension in dimensions:
- print(dimension)
- dimensions = (400,100)
- for dimension in dimensions:
- print(dimension)
- 200
- 50
- 400
- 100
来源: http://www.bubuko.com/infodetail-2641027.html