回圈
回圈是什么呢?
以程式的概念来讲,回圈就是代表要执行某件事情很多次。
那这跟序列容器又有什么关系呢?
想像我们有一个List,里面存了10个整数。
现在你想把每个元素都+10,你会怎么做?
直观一点,你可能会想说,写个10行程式码,每一行处理一个元素。
那假设今天有100,甚至10000个元素的时候怎么办?
不会真的写10000行程式码吧XD?
而回圈,就是要在这个情况下帮助我们。
for回圈(for loop)
身为一个程式设计师,你一定要认识回圈界的明星,那就是所谓的for回圈!
for loop的设计概念大概是像这样的:
doing this loop for X times => 请执行这个回圈X次
所以在其他程式语言中,for回圈的基本型都是要你给定执行次数。
但在Python之中,for回圈却是走另外一条路线。
Python的for回圈,是设计来从序列容器内提取物件的。
简单来说,要使用for回圈,要先有序列容器。
话不多说,范例来:
arr1 = [2, 4, 6, 8, 10]
str1 = 'hello python'
for i in range(10):
print(i)
print('***\n')
for i in range(len(arr1)):
print(arr1[i])
print('***\n')
for i in arr1:
print(i)
print('***\n')
for i in str1:
print(i)
print('***\n')
# for i in arr1:
# i += 1
# print(arr1)
首先,我们来看看第一个for回圈。
我们产生了一个含有10个元素的range,内部的元素为0~9
。
接着我们使用for 變數 in 容器
的语法,来告诉Python我们要从这个容器中拿出元素。
接着回圈要做的事情,我们要以一个程式区块来表示。
还记得我们在语法教学part 1说的,程式区块必须以:
以及缩排来定义。
最后我们来好好探讨这个变数i
,这个变数即为我们从容器所取出的元素,因此在每次执行回圈的过程中,这个i
的值会不一样。
以这个range为例,他依序存放0~9
,因此第一次取出的元素为0
,第二次为1
,之后以此类推。
取出后我们将元素放入print
这个函式,将他们输出到萤幕上。
来看看第二个回圈。
首先我们len
用来取得arr1
的长度,并用这个长度来产生一个range。arr1
的长度为5,因此会产生一个大小为5的range,里面放有0~4
。
如果你还记得昨天我们说过的index,一个长度为5的List,其中每个元素对应的index就刚好为0~4
。
因此for回圈从这个range中取出的五个元素,就刚好可以用来当作arr1
的index,再搭配容器[index]
的语法,就可以拿到List中的元素啰!
第三与第四个回圈与前面的例子都很像,因此我们在此不多做解释。
但被注解掉的第五个回圈就很有趣了。
请你在心中默默猜测最后的print(arr1)
到底会印出什么,再把注解拿掉,执行程式。