【Python 第25课】初探list


今天要说一个新概念:list,中文可以翻译成列表,是用来处理一组有序项目的数据结构。想象一下你的购物清单、待办工作、手机通讯录等等,它们都可以看作是一个列表。说它是新概念也不算确切,因为我们之前已经用过它,就在这个语句里:

for i in range(1, 10):
    print(i)
    #此处略过数行代码

 

看出来list在哪里了吗?你试一下:

print(list(range(1,10)))

 

得到的结果是:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

 

这样一个中括号中的序列就是 list(列表)。虽然在py3,range的结果并不完全等同于list(这个我们以后再讨论),需要额外转换一下,但你暂时可把它当做list来理解。

 

把上面那个for循环语句写成:

l = range(1, 10)
for i in l:
    print(i)
    #此处略过数行代码

效果是一样的。

 

于是可以看出,for循环做的事情其实就是遍历一个列表中的每一项,每次循环都把当前项赋值给一个变量(这里是i),直到列表结束。

 

我们也可以定义自己的列表,格式就是用中括号包围、逗号隔开的一组数值:

l = [1, 1, 2, 3, 5, 8, 13]

 

可以用print输出这个列表:

print(l)

 

同样也可以用for...in遍历这个列表,依次输出了列表中的每一项:

for i in l:
    print(i)

   

列表中的元素也可以是别的类型,比如:

l = ['meat', 'egg', 'fish', 'milk']

 

甚至是不同类型的混合:

l = [365, 'everyday', 0.618, True]

 

l 身为一个列表,有一些特有的功能,这个我们下回再说。

 

注意:我们这里的例子里用的变量名是小写字母 l,不是大写字母 I。你也可以用其他的名字命名变量,但请不要用 list 本身,因为它已经用来表示列表类型,如果再给它赋值,会导致原本的功能被覆盖,很可能带来问题。

 

#==== 点球小游戏 ====#

 

待会儿要去现场看场中超比赛。于是想到,以我们现在所学的,可以做一个罚点球的游戏。大概流程是这样:

每一轮,你先输入一个方向射门,然后电脑随机判断一个方向扑救。方向不同则算进球得分,方向相同算扑救成功,不得分。

之后攻守轮换,你选择一个方向扑救,电脑随机方向射门。

第5轮结束之后,如果得分不同,比赛结束。

5轮之内,如果一方即使踢进剩下所有球,也无法达到另一方当前得分,比赛结束。

5论之后平分,比赛继续进行,直到某一轮分出胜负。

 

你先想想怎么写,能不能自己搞定。过两天我再来说我的做法。

 

来源:Crossin的编程教室