今天又被自己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 循環功能,強大....