今天又被自己shock到了,原来以为对range的理解蛮熟悉了......今天小测试一做又不行了,来看题目
codecademy上面要求打印一个以“O”为元素的5×5矩阵,第一要求是先打印5遍“O”,并声称5列
正确代码如下
board = []
for x in range(0, 5): #一开始完全没看懂为什么要取个range(0,5)
board.append(["O"] * 5) #这执行语句里面完全没有x的踪迹啊,和前面学的根本不一样......前面学的里面执行语句里面都有for后面的元素x的
后来翻了些资料,感觉应该是这样的.
for x in range(0,5) 其实是历遍了[0,1,2,3,4],生成5个x,而对应每一次的x,都执行了一遍board.append这个功能!!!
什么意思呢?就是其实对于x来说,出不出现在下面的循环语句中,根本无所谓,可有可无,他背后实际上是提供了一个控制循环数量的功能啊啊啊啊啊啊啊!!!
另外,其实你不用range,也没问题,只要元素数量可以提供给前面的x,就能控制循环次数,来看下面自己做的测试
board = []
for x in [3,4,5]:
board.append(["O"] * 5)
print (board)
这个打印出的结果是如下
[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O']]
看到没?x对应了3次生成,所以执行了语句3遍........
甚至说!!!
board = []
for x in 'range':
board.append(["O"]*5)
print (board)
in后面是一个字符串'range',他实际也是可以提供5个元素'r' 'a' 'n' 'g' 'e',同样,提供了5次循环数量的控制!!
打印结果为
[['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O'], ['O', 'O', 'O', 'O', 'O']]
所以.......重新认识for 循环功能,强大....