过去与许多初学者聊天过程中,许多人就算上过For循环也不太知道该如何真实使用。如同这篇文章《为什么要有For循环的存在呢?》所说大家也知道For循环非常重要,可以节省大量时间。更不用说未来的应用如:网路爬虫、网页后端与资料清理都需要用到大量的For循环。
可惜因为For循环的抽象,让许多人开始怀疑自己适不适合学习Python。或许你可以先参考这篇《自学Python为什么老是学不好?》。结果根据我跟许多初学者交流后发现,一般初学者无法理解的重要原因是他无法想像for的运作过程所以本篇会再详细介绍python For循环的执行过程。
变数型态List
一开始先跟大家介绍一个变数型态:List 。List 是指一种可以把多个连续资料放入一个变数中的变数型态。通常是用中括号刮起来。如下图2 :a=[1,2,3,4] 并print(a)。这个资料艘后会用到。
a[0] 就会得到 1
图2 a=[1,2,3,4] 并print(a)
感谢网友张家华:提醒Python list不是阵列。
python的阵列为: numpy.array([1,2,3])
具体差异就是array的元素必须相同型别list则不需要。
For 回圈
我们来看For循环的架构:并由阵列数量决定圈数
for变数in List :
被重复程式码第一行
被重复程式码第二行
...
套到简单案例中:(可以对照上方灰色区块)
案例拆解
通常会让初学者很疑惑的是为什么写i但是却会印出1,2,3,4呢?
我们可以把For循环做一个动作拆解。
先将完全执行的结果列出来。我们使用十字表对应i跟print每圈对应结果。
第一圈拆解
其实for 回圈在每一圈的时候把List 中第0个数字丢入i变数中。所以当print(i) 时,这时的i是1 所以才会印出1。
第二圈拆解
在第二圈的时候把List 中第1个数字丢入i变数中。所以当print(i) 时,这时的i是2 所以才会印出2。
第三圈拆解
在第三圈的时候把List中第2个数字丢入i变数中。所以当print(i)时,这时的i是3所以才会印出3。
第四圈拆解
依此类推直到List 结束为止。这也是为什么会印出1,2,3,4的原因
想想看如果变成print( i+1)呢?
所以新手该如何思考呢?
其实你只要思考两个重点。
1.想要达到的结果,哪段程式码被重复了? 把重复程式码写到缩排内
2.什么地方是有顺序性的? 把顺序值丢到阵列中。
这样一步一步带领很容易就可以帮助初学者看到For循环的执行过程!
不知道有没有什么建议欢迎跟我说喔!