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