1 循环概述
循环能够对列表的每个元素都采取一个或一系列相同的措施,高效处理任何长度的列表。
- 循环让计算机自动完成重复工作。
- 每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因此,我们可对列表中的每个值执行任意次数的操作。
- for循环结束后,我们需要提供总结性输出或者接着执行程序必须要完成的其他任务。
- 在for循环后,没有缩进的代码都只执行一次,而不会重复执行。
- Python根据缩进来判断代码行和前一个代码行的关系。
a = '12345'
for item in a:
print(item)
b = [1, 2, 3, 4]
for item in b:
print(item)
c = ['a', 'b', 'c', 'd']
for item in c:
print(item)
d = {1: 'a', 2: 'b', 3: 'c'}
for key, value in d.items():
print('{}={}'.format(key, value))
e = {1, 2, 3, 5, 8}
for item in e:
print(item)
for item in range(1, 20, 4):
print(item)
2 编写循环时常见的错误
- 忘记缩进:对于for语句后面且属于循环组成部分的代码行,没有缩进。
- 逻辑错误:从语法上看,程序员书写的代码是合法的,但是由于存在逻辑错误,所得到的的结果并不符合预期。
- 不必要的缩进。
- 遗漏冒号。
# break
for i in range(10):
if i % 2 == 0:
break
else:
print(i)
# continue
for i in range(10):
if i % 2 == 0:
continue
print(i)
3 数值列表
列表非常适合存储数字集合。
3.1 方法range()
- range()能够生成一系列数字。
- 可以使用方法list()将range()的结果直接转化为列表。
- range()几乎能够创建任何需要的数字集。
- range()可以指定步长。
4 对数字列表执行简单的统计计算
4.1 方法min()
min()找出数字列表中的最小值。
4.2 方法max()
max()找出数字列表中的最大值。
4.3 方法sum()
sum()算出数字列表中的总和。
5 列表解析
- 列表解析让我们只编写一行代码就能生成列表。
列表解析将for循环和创建新元素的代码合并成一行,并自动附加新元素。
- 步骤:
1、首先,指定一个描述性的列表名。
2、然后,指定一个左方括号,并定义一个表达式,用于生成我们要存储到列表中的值。
3、接下来,编写一个for循环,用于给表达式提供值,再加上右方括号。
6 使用列表的一部分
6.1 切片
- 列表的部分元素在python中称为切片。
- 要创建切片,可以指定要使用的第一个元素和最后一个元素的索引。
- 未指定第一个索引,Python将自动从列表开头开始。
- 未指定最后一个索引,Python将自动从列表末尾开始。
6.2 复制列表
根据既有列表创建新列表。
我们可以创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引。这样,python就创建了一个始于第一个元素,终止于最后一个元素的切片。
7 列表小结
列表适合用于存储在程序运行期间可能变化的数据,即列表是可以修改的。
8 元组概述
- 不能修改的值成为不可变的,不可变的列表称为元组,即一系列不可修改的元素。
使用圆括号而不是方括号。
- 定义元组后,我们可以使用索引来访问元素。
- 元组值得元组不可修改,试图修改元组中元素的值,会导致Python返回类型错误消息。
可以给存储元组的变量赋值。
# 元组的创建
a = (1, 2, 3)
b = 1,
print(a, type(a))
print(b, type(b))
# 元组的访问
print(a[1])
print(a[1:3])
print(a[1:])
print(a[:-1])
# 获取元组的一些基本信息
tuple1 = (9, 1, -4, 3, 7, 11, 3)
print("tuple1的长度 = ", len(tuple1))
print("tuple1的最大值 = ", max(tuple1))
print("tuple1的最小值 = ", min(tuple1))
print("tuple1中3这个元素一共出现{}次".format(tuple1.count(3)))
print(tuple1.index(9))
# 元组的改变(元组中的元素不可以改变)
# tuple2 = ('a', 'c', 'd')
# 元组翻转(元组中的元素不可以改变)
# tuple3 = (1, 2, 3)
# 元组排序(元组中的元素不可以改变)
# tuple4 = (9, 1, -4, 3, 7, 11, 3)
8.1 列表和元组的比较
- 元组是不可变的Python对象,存储在固定的一块内存。
- 列表是可变的Python对象,需要两块内存存储空间,一块用来固定实际的列表数据,一块可变的空间用于扩展。
结论:元组的创建和访问比列表快,但是不如列表灵活。
9 PEP 8(设置代码格式)
Python改进提案(Python Enhancement Proposal, PEP)
动手试一试
4-1 比萨:
pizzas = ['new york style', 'chicago stycle', 'thick style']
for pizza in pizzas:
print(pizza)
print("I like " + pizza.title() + " pizza.\n")
print("I really love pizza!")
4-2 动物:
animals = ['dog', 'cat', 'bird']
for animal in animals:
print(animal)
print(animal.title() + " would make a great pet.\n")
print("Any of these animals would make a great pet!")
4-3 数到20:
for value in range(1, 21):
print(value)
4-4 一百万:
numbers = [value * 1 for value in range(1, 1000001)]
print(numbers)
4-5 计算1~1000000的总和:
numbers = [value * 1 for value in range(1, 1000001)]
print(min(numbers))
print(max(numbers))
print(sum(numbers))
4-6 奇数:
numbers = [value * 1 for value in range(1, 21, 2)]
for number in numbers:
print(number)
4-7 3的倍数:
numbers = []
for value in range(3, 31):
if value % 3 == 0:
numbers.append(value)
for number in numbers:
print(number)
4-8 立方:
numbers = [value ** 3 for value in range(1, 11)]
for number in numbers:
print(number)
4-9 立方解析:
numbers = [value ** 3 for value in range(1, 11)]
for number in numbers:
print(number)
4-10 切片:
numbers = [value ** 3 for value in range(1, 8)]
for number in numbers:
print(number)
print("The first three items in the list are:")
print(numbers[:3])
print("Three items from the middle of the list are:")
print(numbers[2:5])
print("The last three items in the list are:")
print(numbers[-3:])
4-11 你的比萨和我的比萨:
pizzas = ['new york style', 'chicago stycle', 'thick style']
for pizza in pizzas:
print(pizza)
print("I like " + pizza.title() + " pizza.\n")
print("I really love pizza!")
friend_pizzas = pizzas[:]
pizzas.append('pan style')
friend_pizzas.append('seafood style')
print("My friend's favorite pizzasare:")
for pizza in friend_pizzas:
print(pizza)
print("\nMy favorite pizzas are:")
for pizza in pizzas:
print(pizza)
4-12 自助餐:
foods = ('French cuisine', ' today\'s special', 'chef\'s special', 'continental cuisine', 'specialty')
for food in foods:
print(food)
print("")
foods = ('French cuisine', ' today\'s special', 'chef\'s special', 'assorted porridge', 'fast food')
for food in foods:
print(food)