循環結構終於會出現了
這章講完差不多讀者可以實現大部分程序了
range()函數
用於生成一個整數序列
內置函數:前面不需要加任何前綴,可以直接使用的函數
創建range對象的三種方式
range(stop)
該函數的作用是創建一個從[0,stop)的整數列表,同時兩個數之間的長度默認為1,即步長為1,注意stop<=0的時候,其返回值為空,不會創建
range(start, strop)
該函數時創建一個[start, stop)的整數列表,步長默認讓然為1,同樣這邊的start必須小於stop否則不能創建一個有效的整數列表
range(start, stop, step)
那么自然的就知道該函數的作用是,創建一個[start, stop)的整數列表,步長為step,可以理解為該函數的作用就是創建一個等差數列
range函數的返回值是一個迭代器對象(C++中的STL出來了)
如果想要查看range返回值中的整數序列
借助列表list來實現
print(list(range(10))
range類型的有點,不管range對象表示的整數序列有多長,所有range對象占用的內存空間都是相同的,因為僅僅需要存儲start,stop和step,只有當用到range對象時,才會去計算序列中的相關元素(老數學帶師了){推廣后,可以發現,只要這個數列可以由通項表示,那么告知首項,范圍,即可唯一確定該數列,這邊的通項因為是等差數列,所以簡化成由公差也就是步長來唯一確定}
in與not in判斷整數序列中是否存在(不存在)指定的整數
example:
點擊查看代碼
r = range(0)
print(list(r))
r = range(19, 20)
print(list(r))
r = range(10, 21, 10)
print(list(r))
print(10 in list(r))
print(10 in r)
print(9 in r)
print(8 not in r)
在這邊一定要知道的是,range返回的迭代器對象或者說range這個對象所占的內存是一樣的,並不會因為range的范圍里面的整數個數非常大而非常大,這是需要注意的地方,只有真正用到range的時候進行展開(貌似展開后對於內存的占用又是跟里面的整數個數成正相關了,網上查找,貌似存儲的時候大家的內存占用都一樣,但是使用的時候是會自己建立一個list來實現的)
