第4章 操作列表

1 循环概述

循环能够对列表的每个元素都采取一个或一系列相同的措施,高效处理任何长度的列表。

  • 循环让计算机自动完成重复工作
  • 每个缩进的代码行都是循环的一部分,且将针对列表中的每个值都执行一次。因此,我们可对列表中的每个值执行任意次数的操作
  • for循环结束后,我们需要提供总结性输出或者接着执行程序必须要完成的其他任务
  • 在for循环后**,没有缩进的代码都只执行一次,而不会重复执行**。
  • Python根据缩进来判断代码行和前一个代码行的关系

2 编写循环时常见的错误

  • 忘记缩进:对于for语句后面且属于循环组成部分的代码行,没有缩进。
  • 逻辑错误:从语法上看,程序员书写的代码是合法的,但是由于存在逻辑错误,所得到的的结果并不符合预期。
  • 不必要的缩进
  • 遗漏冒号

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返回类型错误消息。
    可以给存储元组的变量赋值

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)
上一篇:剖根问底:Java 不能实现真正泛型的原因是什么?


下一篇:设计模式