小白学Python

练习 32 循环和列表 Learn Python 3 The H

2018-03-17  本文已影响285人  爱学习的ai酱

练习 32 循环和列表

你现在可以做一些更有意思的程序了。如果你一直跟着我们的节奏,你应该可以把所有学过的东西用 if 语句和布尔表达式结合起来,让你的程序做一些好玩的事情。

不过,程序仍然需要快速做一些重复的事情。我们要在这个练习中用一个 for-loop 来创建和打印各种列表。你在做练习的时候,得想想它们是什么。我不会立马告诉你,你得自己去想。

在你能够用一个 for-loop 之前,你需要一种方法来把这些循环的结果储存在某处。最好的办法就是用列表。列表顾名思义就是一个按顺序从头到尾组成的某种东西的容器。它并不复杂:你只需要学习一个新的语法。首先,你可以这样创建列表:

hairs = ['brown', 'blond', 'red']
eyes = ['brown', 'blue', 'green'] weights = [1, 2, 3, 4]

以左方括号( [ )开始打开列表,然后把你想要的条目用逗号隔开放进去,有点类似于函数的参数。最后,用右方括号( ] )来表明列表的结束。Python 会选取这个列表以及它的所有内容并把它们分配到变量里。

警告!
这块内容对于不会编程的人来说有点难理解,因为你的大脑一直以来都被训练成平面的了。还记得上个练习中你把 if 语句放在 if 语句中吗?这可能让你伤脑筋了,因为大多数人不理解如何在一个东西里面嵌套一个东西。在编程中,嵌套结构无处不在。你会看到一个函数调用其他包含 if 语句的函数,这个 if 语句中又有一个包含列表的列表。如果你看到一个类似的结构无法理解,拿出一根笔和一张纸,然后手动把它拆解开,直到你完全理解为止。

我们现在要用 for-loops 来创建一些列表,然后把它们打印出来。

ex32.py

1   the_count = [1, 2, 3, 4, 5]
2   fruits = ['apples', 'oranges', 'pears', 'apricots']
3   change = [1, 'pennies', 2, 'dimes', 3, 'quarters'] 
4
5   # this first kind of for-loop goes through a list
6   for number in the_count:
7       print(f"This is count {number}") 
8
9   # same as above
10  for fruit in fruits:
11      print(f"A fruit of type: {fruit}") 
12
13  # also we can go through mixed lists too
14  # notice we have to use {} since we don't know what's in it
15  for i in change:
16      print(f"I got {i}") 
17
18  # we can also build lists, first start with an empty one
19  elements = [] 
20
21  # then use the range function to do 0 to 5 counts
22  for i in range(0, 6):
23      print(f"Adding {i} to the list.")
24  # append is a function that lists understand
25  elements.append(i) 
26
27  # now we can print them out too
28  for i in elements:
29      print(f"Element was: {i}")

你会看到

练习 23 结果

$ python3.6 ex32.py 
This is count 1 
This is count 2 
This is count 3 
This is count 4 
This is count 5
A fruit of type: apples 
A fruit of type: oranges 
A fruit of type: pears
A fruit of type: apricots 
I got 1
I got pennies 
I got 2
I got dimes 
I got 3
I got quarters
Adding 0 to the list. 
Adding 1 to the list.      
Adding 2 to the list. 
Adding 3 to the list.    
Adding 4 to the list. 
Adding 5 to the list.     
Element was: 0
Element was: 1
Element was: 2
Element was: 3
Element was: 4
Element was: 5

附加练习

  1. 看看你是如何使用 range 的。查阅上面的 range 函数并理解掌握。
  2. 你能在第 22 行不使用 for-loop,而是直接把 range(0, 6) 赋给 elements 吗?
  3. 找到 Python 文档关于列表的部分,然后读一读。看看除了 append,你还能对列表做哪些操作?

常见问题

如何创建一个二维列表?可以用这种列表中的列表:[[1,2,3],[4,5,6]]

列表(lists)和数组(arrays)难道不是一个东西吗?这取决于语言以及实现方法。在传统术语中,列表和数组的实现方式不同。在 Ruby 中都叫做 arrays,在 python 中都叫做 lists。所以我们就把这些叫做列表吧。

为什么 for-loop 可以用一个没有被定义的变量?变量在 for-loop 开始的时候就被定义了,它被初始化到了每一次 loop 迭代时的当前元素中。

为什么 range(1, 3) 中的 i 只循环了两次而不是三次? range() 函数只处理从第一个到最后一个数,但不包括最后一个数,所以它在 2 就结束了。这是这类循环的通用做法。

element.append() 的作用是什么?它只是把东西追加到列表的末尾。打开 Python shell 然后创建一个新列表。任何时候当你遇到类似的用法,试着多玩几次,去体会它们的作用。

上一篇下一篇

猜你喜欢

热点阅读