PDF版 ePub版

# exercise32.循环和列表

out.我们的程序还需要能快速的完成很多重复的工作。这节习题，我们将使用 for 循环来创建并打印一些列表。在练习的过程中，你会逐渐明白它们是怎么回事，我不会告诉你答案的，你要自己去找出来。

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

Warning: 对于不会编程的人来说这是一个难点。习惯性思维告诉你的大脑大地是平的。记得上一个练习中的 if 语句嵌套吧？你可能觉得要理解它有些难度，因为生活中一般人不会去像这样的问题，但这样的问题在编程中几乎到处都是。你会看到一个函数调用另外一个包含 if 语句的函数，其中又有嵌套列表的列表。如果你看到这样的东西一时无法弄懂，就用纸笔记下来，手动分割代码，直到弄懂为止。

the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']

# this first kind of for-loop goes through a list
for number in the_count:
print "This is count %d" % number

# same as above
for fruit in fruits:
print "A fruit of type: %s" % fruit

# also we can go through mixed lists too
# notice we have to use %r since we don't know what's in it
for i in change:
print "I got %r" % i

# we can also build lists, first start with an empty one
elements = []

# then use the range function to do 0 to 5 counts
for i in range(0, 6):
print "Adding %d to the list." % i
# append is a function that lists understand
elements.append(i)

# now we can print them out too
for i in elements:
print "Element was: %d" % i

## 你看到的结果

\$ python 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'
Element was: 0
Element was: 1
Element was: 2
Element was: 3
Element was: 4
Element was: 5

## 附加题

1.注意一下 range 的用法。查一下 range 函数并理解它。 2.在第 22 行，你是否可以直接将 elements 赋值为 range(0,6)，而无需使用 for 循环？ 3.在 Python 文档中找到关于列表的内容，仔细阅读以下，除了 append 以外列表还支持哪些操作？

## 常见问题

### Q: 为什么 for i in range(1, 3):只循环了两次？

range()函数循环的次数不包括最后一个。所以 range(1,3)只循环到 2,这是这种循环最常用的方法。