【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的编程教室