Exercise 32:循环和列表

原文链接:http://learnpythonthehardway.org/book/ex32.html

      你现在应该能够写一些更有趣的项目了。如果你一直能跟的上的话,你应该认识到你现在已经可以用你学到的 if 语句和布尔表达式组合写一个能够实现一些小功能的项目了。

       然而,程序中也常常需要非常快的重复做一些事情。我们打算在这个练习中使用 for-loop 来创建和打印不用的列表。当你做这个练习的时候,你会弄明白它们是怎么回事。我现在不会告诉你,你要自己去弄明白。

       在你开始使用 for-loop 之前,你需要将循环得到的结果以某种方式存储在某个地方。最好的方法就是使用列表。所谓列表,顾名思义就是按一定顺序存放了一些东西的容器。列表并不复杂,你只要学习一个新的语法罢了。首先,这里有告诉你怎么创建一个列表:

hair = ['brown' ,'blond' ,'red']
eyes = ['brown' ,'blue' ,'green']
weights = [1 ,2 ,3 ,4]
       你要做的就是用 [ (左中括号)打开一个列表,然后放入你想放进去的东西,用逗号分隔它们,就像你写函数参数那样。最后以 ] (右中括号)来表明这个列表结束。Python 接收这个列表中的所有内容并将其赋给某个变量。

警告:

       对于不会编程的人来说这是一个难点。习惯性思维告诉你的大脑大地是平的。记得上一个练习中的 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

输出结果如下:

c:\>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'
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函数相关的知识理解其用法。
函数原型:range(start, end, scan):

参数含义:start:计数从start开始。默认是从0开始。例如range(5)等价于range(0, 5);
          end:技术到end结束,但不包括end.例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
          scan:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
2、在第 22 行,你可以可以直接将 elements 赋值为 range(0,6),而无需使用 for 循环?
 elements = []
 elements = range(0 ,6)
3、找到阅读关于列表的Python介绍文档。除了 append 之外列表还可以做什么其他操作。

学生遇见的常见问题:

如何创建一个二维列表?

答:就是一个列表在另一个列表中,比如:[[1 ,2 ,3] ,[4 ,5 ,6]] 。

列表和数组是一样的东西吗?

答:这主要取决于编程语言和编译器。一般从作用来说列表和数组是有很多不同的。在Ruby语言中它们称之为数组,而在Python中却称之为列表。之所以到现在也称之为列表是因为Python中一直以来就是这么称呼的。

for循环中怎么可以使用没有定义过的变量?

答:这些变量时定义过的,在每一次循环过程中这些变量都被初始化为当前的值。

为什么 for i in range(1 ,3): 只循环了两次而不是三次?

答:range()函数只输出第一个数到最后一个数之间的整数,但不包含最后这个数。所以上述输出两个就停止了,而不是三个。这是循环中最常见的一种使用方式。

elements.append() 做了什么操作?

答:它这是简单在列表尾部追加元素。打开Python命令行尝试着做一些关于列表的实例。任何时候你遇到这种类似的问题,你都可以在python 命令行中进行一些交互式的尝试来帮助自己理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值