為什么我們不能創(chuàng)造出超越光速的飛行器?有一個可能是:我們本身就是以光速在“智”宇宙中狂奔著。
“坐地日行八萬里”,在我們形成生命的那一瞬間,我們便擁有了地球的自轉(zhuǎn)速度,除了這個速度還有地球圍繞太陽的速度,還有太陽圍繞銀河飛行的速度,還有銀河圍繞更大質(zhì)量星系的飛行速度,還有還有還有……,這些速度按角度折算后疊加的結(jié)果是怎樣?不要局限于E=M*C*C和宇宙膨脹說,仰望星空,“智”宇宙給予我們的不僅僅是煙波浩渺的震撼。
收。
今天我們繼續(xù)python的內(nèi)容,前面的篇章,列舉了很多列表的例子,比如:a=[1,2,3,4],如果列表盒子里需要有更多的元素,那么我們要怎么辦,依次寫下去嗎?也可以,不過這個難度雖然比超越光速簡單,但我們不必悲催地一個一個地寫出來。
python提供了range()工具,這個工具呢,可以很方便地讓我們得到一個很多元素的列表,怎么用呢,看例子。
>>> range(9)range(0, 9)>>> list(range(9))[0, 1, 2, 3, 4, 5, 6, 7, 8]>>>
當(dāng)我們想創(chuàng)建一個9個元素的列表,那么我們可以用list(range(9)),這個時候我們不必一個一個地將列表里的元素寫出來,很方便吧。
這個range()工具的括號里面最多可以包含三個內(nèi)容,分別用逗號隔開,如:
range(a,b,c)
這里的a代表起點,默認值是0,若忽略不寫時,c也不能寫出來。
這里的b代表終點,它是必須寫的內(nèi)容,如上面的例子range(9),數(shù)字9即是b的值。
這里的c代表增項,即以什么樣的增項從a到b,默認值為1,在上面的例子中,range(9)等同于range(0,9,1),寫法上只是忽略了第一位置的0和末尾的1,而不是range(9,1),只忽略不寫了第一位置的0。
>>> list(range(9,1))[]>>>
使用list(range(9,1))后,得到一個空列表,很顯然range(9,1)不是range(9)。
range(9,1)等同于什么?range(9,1)等同于range(9,1,1),忽略不寫的是最末位的1,可以這樣理解:內(nèi)容c是最優(yōu)先可忽略的,其次是內(nèi)容a,這個要記牢。
>>> list(range())TypeError: range expected 1 arguments, got 0>>>
若我們在括號中什么也不寫,單純的list(range())是不行的,即:內(nèi)容b不能不寫。
值得注意的是,使用range(a,b,c)產(chǎn)生的列表,當(dāng)c=1時,列表元素的個數(shù)是b個。
有了range(a,b,c)這樣的工具,創(chuàng)造數(shù)字元素列表很方便,我們利用這三個內(nèi)容可以創(chuàng)建一些不同的列表來更深入的了解。
>>> a=0>>> b=30>>> c=1>>> list(range(a,b,c))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19,20, 21, 22, 23, 24, 25, 26, 27, 28, 29]>>> list(range(b))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11, 12, 13, 14, 15, 16, 17, 18, 19,20, 21, 22, 23, 24, 25, 26, 27, 28, 29]>>>
這是c等于1的樣子,列表元素的個數(shù)是30個,c=2呢?
>>> c=2>>> list(range(a,b,c))[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28]>>> len(list(range(a,b,c)))15>>>
當(dāng)c=2時,產(chǎn)生了b//c個元素的列表,而且是個偶數(shù)列表。
有奇數(shù)的么?
>>> a=1>>> list(range(a,b,c))[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29]>>> len(list(range(a,b,c)))15>>>
很神奇,當(dāng)a=1時,奇數(shù)列表出現(xiàn)了。
由此看來,列表元素的個數(shù)只取決于b//c,能被整除時,元素個數(shù)即是b//c,那不能被整除時呢?
>>> b=9>>> len(list(range(a,b,c)))4>>> b//c4>>>
不能被整除時,b//c好像也是對的。好吧好吧,b//c雖然寫起來簡單,可使用工具len(),犧牲些時間,準(zhǔn)確度有保障。
c是負值會怎樣呢?
>>> c=-2>>> len(list(range(a,b,c)))0>>>
居然是個空列表,對對對,c為負值的時候,起點數(shù)字要大于終點的數(shù)字。
>>> a=9>>> b=0>>> len(list(range(a,b,c)))5>>> list(range(a,b,c))[9, 7, 5, 3, 1]>>>
哦哦,這樣得到的元素個數(shù): (a+1)//(-c),很麻煩,很不好理解,好吧,獲取列表的元素個數(shù)還是用len()這個工具,很直觀。
今天的內(nèi)容就這么多,range()工具是我們創(chuàng)造數(shù)字元素列表的工具,有了這樣的工具,我們很容易創(chuàng)造出一些特殊的全是數(shù)字的列表,忽然有種感想,之所以我們創(chuàng)造不出超越光速的飛行器,很大可能是我們使用的工具不對,或許在未來的某一天,我們發(fā)現(xiàn)類似range()的工具,可以以任意倍數(shù)的光速進行飛行。
—————————-