python基礎(chǔ)學(xué)習(xí)筆記(三)
2013-04-18 00:22 ?蟲師 閱讀( ... ) 評(píng)論( ... ) 編輯 收藏?
序列概覽
Python? 包含 6? 種內(nèi)建的序列,這里重點(diǎn)討論最常用的兩種類型:列表和元組。
列表與元組的主要區(qū)別在于,列表可以修改,元組則不能。也就是說如果要根據(jù)要求來添加元素,那么列表可以會(huì)更好用;而出于某些原因,序列不能修改的時(shí)候,使用元組則更為合適。
在操作一組數(shù)值的時(shí)候,序列很好用。可以用序列表示數(shù)據(jù)庫中一個(gè)人的信息 --- 第一 1 是姓名,第 2 個(gè)元素是年齡。根據(jù)上述內(nèi)容編寫一個(gè)列表。
>>> hu=[ ' huhu ' ,25]
?
同時(shí),序列也可以包含其他的序列,因此,構(gòu)建如下一個(gè)人員的信息的列表也是可的,這個(gè)列表就是你的數(shù)據(jù)庫:
>>> huhu = [ ' huhu ' ,25 ] >>> chongshi = [ ' chongshi ' ,32 ] >>> database = [huhu,chongshi] >>> database [[ ' huhu ' , 25], [ ' chongshi ' , 32]]
?
?
通用序列操作
所有序列類型都可以進(jìn)行某些特定的操作。這些操作包括:索引( indexing )、分片( sliceing )、加( adding )、乘( multiplying )以及檢查某個(gè)元素是否屬于序列的成員(成員資格)。
?
索引
序列中的所有元素都是有編號(hào)的 ----- 從 0? 開始遞增。這些元素可以通過編號(hào)分別訪問,如下所示:
>>> greeting = ' chongshi ' >>> greeting[0] ' c ' >>> greeting[2 ] ' o '
?
使用負(fù)數(shù)索引時(shí), python? 會(huì)從右邊,也就是從最后 1 個(gè)元素開始計(jì)數(shù)。最后 1 個(gè)元素的位置編號(hào)是 -1? (不是 -0 ,?因?yàn)槟菚?huì)和第 1 個(gè)元素重合):
>>> greeting = ' chongshi ' >>> greeting[-1 ] ' i ' >>> greeting[-2 ] ' h '
?
當(dāng)然,我們也可以通過另一種方式使用所引,兩種方式的效果是一樣的:
>>> ' chongshi ' [0] ' c ' >>> ' chongshi ' [-1 ] ' i '
?
如果一個(gè)函數(shù)調(diào)用返回一個(gè)序列,那么可以直接對(duì)返回結(jié)果進(jìn)行索引操作。例如,假設(shè)只對(duì)用戶輸入年份的第 4 個(gè)數(shù)字感興趣,那么,可以進(jìn)行如下操作:
>>> fourth = raw_input( ' year: ' )[3 ] year: 2013 >>> fourth ' 3 '
提示:請(qǐng)?jiān)囍脫舸a,更能助幫你理解。不要懶得動(dòng)手。
?
索引示例:
# 根據(jù)給定的年月日以數(shù)字形式打印出日期 months = [ ' January ' , ' February ' , ' March ' , ' April ' , ' May ' , ' June ' , ' July ' , ' August ' , ' September ' , ' October ' , ' November ' , ' December ' ] # 以1-31的數(shù)字作為結(jié)尾的列表 endings = [ ' st ' , ' nd ' , ' rd ' ]+ 17*[ ' th ' ]\ +[ ' st ' , ' nd ' , ' rd ' ]+ 7*[ ' th ' ]\ +[ ' st ' ] year =raw_input( ' year: ' ) month =raw_input( ' month(1-12): ' ) day =raw_input( ' day(1-31) ' ) month_number = int(month) day_number = int(day) # 記得要將月份和天數(shù)減1,以獲得正確的索引 month_name = months[month_number-1 ] ordinal = day + endings[day_number - 1 ] print month_name + ' , ' + ordinal + ' , ' + year ----------------------------------------------- 輸入: >>> year: 2013 month( 1-12):4 day( 1-31)14 輸出: April ,14th , 2013
?
分片
與使用索引來訪問單個(gè)元素類似,可以使用分片操作來訪問一琮范圍內(nèi)的元素。分片通過冒號(hào)相隔的兩個(gè)索引來實(shí)現(xiàn):
>>> tag = ' Python web site ' >>> tag[9:30] # 取第9個(gè)到第30個(gè)之間的字符 ' http://www.python.org ' >>> tag[32:-4] # 取第32到第-4(倒著數(shù)第4個(gè)字符) ' Python web site ' >>>
?
如果求 10 個(gè)數(shù)最后三個(gè)數(shù):
>>> numbers = [0,1,2,3,4,5,6,7,8,9 ] >>> numbers[7:-1] # 從第7個(gè)數(shù)到 倒數(shù)第一個(gè)數(shù) [7, 8] # 顯然這樣不可行 >>> numbers[7:10] # 從第7個(gè)數(shù)到第10個(gè)數(shù) [7, 8, 9] # 這樣可行,索引10指向的是第11個(gè)元素。 >>> numbers[7:] # 可以置空最后一個(gè)索引解決 [7, 8, 9 ] >>> numbers[:3 ] [0, 1, 2 ] >>> numbers[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
?
分片示例:
# 對(duì)http://fnng.cnblogs.com形式的URL進(jìn)行分割 url = raw_input( ' Please enter the URL: ' ) domain = url[11:-4 ] print " Domain name: " + domain ------------------------------------------
輸入: >>> Please enter the URL:http: // fnng.cngblogs.com 輸出: Domain name:.cngblogs
?
更大步長:
>>> numbers = [0,1,2,3,4,5,6,7,8,9 ] >>> numbers[0:10:1] # 求0到10之間的數(shù),步長為1 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] >>> numbers[0:10:2] # 步長為2 [0, 2, 4, 6, 8 ] >>> numbers[0:10:3] # 步長為3 [0, 3, 6, 9]
?
序列相加
通過使用加號(hào)可以進(jìn)行序列的連接操作:
>>> ' hello. ' + ' world! ' ' hello.world! ' >>> [1,2,3] + ' world! ' Traceback (most recent call last): File "" , line 1, in [ 1,2,3] + ' world! ' TypeError: can only concatenate list ( not " str " ) to list
?
正如錯(cuò)誤提示,列表和字符串是無法連接接在一起的,盡管它他們都是序列。簡單來說,兩種相同類型的序列才能進(jìn)行連接操作。
?
乘法
>>> ' python ' * 5 ' python python python python python ' >>> [25] * 10 [ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
?
如果想創(chuàng)建一個(gè)占用十個(gè)元素空間,卻不包括任何有用的內(nèi)容的列表,可以用 Nome
>>> sequence = [None] * 10
>>>
sequence
[None, None, None, None, None, None, None, None, None, None]
?
序列(字符串)乘法示例:
# 以正確的寬度在居中的“盒子”內(nèi)打印一個(gè)句子 # 注意,整數(shù)除法運(yùn)算符(//)只能用在python 2.2 以及后續(xù)版本,在之前的版本中,只能用普通除法(/) sentence = raw_input( " Sentence : " ) screen_width = 80 text_width = len(sentence) box_width = text_width + 6 left_margin = (screen_width - box_width) //2 print print ' ' * left_margin + ' + ' + ' - ' * (box_width - 2)+ ' + ' print ' ' * left_margin + ' | ' + ' ' * text_width + ' | ' print ' ' * left_margin + ' | ' + sentence + ' | ' print ' ' * left_margin + ' | ' + ' ' * text_width + ' | ' print ' ' * left_margin + ' + ' + ' - ' * (box_width - 2)+ ' + '
---------------------------------------------------------
輸入: >>> Sentence : haha! this is my box 輸出: +------------------------+ | | | haha! this is my box | | | +------------------------+
?
?
成員資格
?為了檢查一個(gè)值是否在序列中,可以使用 in? 運(yùn)算符。該運(yùn)算符和之前已經(jīng)討論過的(例如? +? ,? *? 運(yùn)算符)有一點(diǎn)不同。這個(gè)運(yùn)算符檢查某個(gè)條件為真或假的( True?or?False? )。
in 運(yùn)算符的例子:
>>> permissions = ' rw ' >>> ' w ' in permissions True >>> ' y ' in permissions False >>> users = [ ' zhangsan ' , ' lisi ' , ' wangwu ' ] >>> raw_input( ' Enter your user name: ' ) in users Enter your user name: lisi True >>> subject = ' $$$ Get rich now!!! $$$ ' >>> ' $$$ ' in subject True
?
長度、最小值和最大值 ?
內(nèi)建函數(shù) len 、 min? 和 max? 非常有用。 Len 函數(shù)返回序列中所包含元素的數(shù)量。 Min 函數(shù)和 max 函數(shù)則分別返回序列中最大和最小的元素。
>>> numbers = [100,34,678 ] >>> len (numbers) 3 >>> max(numbers) 678 >>> min(numbers) 34 >>> max(2,3 ) 3 >>> min(9,3,2,5 ) 2
?
?
----------------
都是零零碎碎的東西,沒什么難度,打python shell敲擊一下就理解是什么意思了。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
