第4章 操作列表
遍历整个列表
4.1遍历整个列表—for循环
使用for循环打印魔术师名单中的所有名字:
让Python从列表magicians中取出一个名字,并将其存储在变量magician中,打印存储在变量magician中的名字。
对列表magicians中 的每个名字重复执行第2、3行的代码。
# 4_magicians,py
magicians = ['alice','david','carolina']
for magician in magicians:
print(magician)
1.列表中有几个元素,循环就执行几次。
2.单复数的命名约定。
3.在for循环中可对每个元素执行任何操作;在代码行for magician in magicians后面每个缩进的代码行都是循环的一部分,且对列表中的每个值都执行一次。
4.for循环后,没有缩进的代码只执行一次,且不会重复执行。
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!")
4.2避免缩进错误
Python 根据缩进来判断代码行与前一个代码行的关系
1.忘记缩进
例如for循环后的代码行忘记缩进,提示错误
IndentationError: expected an indented block
File "G:\pythonpycharmdeapp\test\day1_1\4_magicians.py", line 3
print(magician.title()+",that was a great trick!")
^
IndentationError: expected an indented block
2.缩进了不需要缩进的
提示错误
IndentationError: unexpected indent
File "G:\pythonpycharmdeapp\test\day1_1\1_1.py", line 2
print(message.title().lstrip())
IndentationError: unexpected indent
3.忘记for循环的冒号
for循环后的冒号告诉Python,下一行是循环的第一行,遗漏冒号将会导致语法错误
SyntaxError: invalid syntax
File "G:\pythonpycharmdeapp\test\day1_1\4_magicians.py", line 2
for magician in magicians
^
SyntaxError: invalid syntax
练习
animals = ['cat','dog','people']
for animal in animals:
print(animal+" would make a great pet")
print("any of these animals would make a great pet!")
4.3创建数值列表
使用列表来存储数字集合
1.使用 函数range() 生成一系列数字
# numbers.py
for value in range(1,5):
print(value)
函数range()从指定的第一个值开始数,到达指定的第二个值后停止,因此输出不包含第二个值;例如ange(1,5),是从1开始数,到5之前停止,因此输出1234不包含5。
2.使用函数 range()和==函数list() ==创建数字列表
2.1函数list()可以直接将range()的结果转换为列表,
将range()作为函数list()的参数,输出为一个数字列表
numbers = list(range(1,6))
print(numbers)
[1, 2, 3, 4, 5]
2.2使用函数range()时,可以指定步长(即等差增加)
numbers = list(range(1,6,2))# 步长为2
print(numbers)
[1, 3, 5]
2.3创建列表包含1~10的乘方
使用空列表,循环和临时变量square
#squares.py
squares = []
for value in range(1,11):
square = value**2
squares.append(square)
print(squares)
或 不使用临时变量,直接将计算得到的值加到列表末尾
#squares.py
squares = []
for value in range(1,11):
squares.append(value**2)
print(squares)
3.对数字列表进行简单的统计
专门处理数字列表的函数,最大值、最小值、总和
4.列表解析
#列表解析
squares = [value**2 for value in range(1,11)]
print(squares)
指定一个列表名–定义一个表达式能用于生成要存储在列表中的值—编写for循环,为表达式提供值
该实例中,for循环for value in range(1,11)将值1~10提供给value**2。
练习
#4-3
for value in range(1,21):
print(value)
#4-4
millions=list(range(1,101))
print(millions)
#4-5
print(min(millions))
print(max(millions))
print(sum(millions))
#4-6
numbers=[]
for value in range(1,21,2):
numbers.append(value)
print(numbers)
#4-7
nums=list(range(3,31,3))
for num in nums:
print(num)
#4-8
lfs=[value**3 for value in range(1,11)]
print(lfs)
4.4使用列表的一部分–切片
1.切片
创建切片,指定使用的i的一个元素和最后一个元素的索引,类似range()函数,在到达指定的第二个索引前面的元素停止。
#players.py
players=['c','s','b','a']
print(players[0:3])
通过切片,可以生成列表的任何子集
如果没有指定第一个索引,自动从头开始提取
同理,不指定最后一个索引,将自动提取到末尾
2.遍历切片
#players.py
players=['c','s','b','a']
for player in players[:3]:
print(player.title())
3.复制列表
根据已有列表创建全新列表
创建包含整个列表的切片 [:]
4.5元组
列表是可修改的,元组是不可修改的列表。
1.元组用圆括号
2.遍历元组中的值–for循环
3.元组中的元素不可修改,但可以给存储元组的变量赋值,即重新定义元组。