python基礎學習筆記(三)
2013-04-18 00:22 ?蟲師 閱讀( ... ) 評論( ... ) 編輯 收藏?
序列概覽
Python? 包含 6? 種內建的序列,這里重點討論最常用的兩種類型:列表和元組。
列表與元組的主要區別在于,列表可以修改,元組則不能。也就是說如果要根據要求來添加元素,那么列表可以會更好用;而出于某些原因,序列不能修改的時候,使用元組則更為合適。
在操作一組數值的時候,序列很好用??梢杂眯蛄斜硎緮祿熘幸粋€人的信息 --- 第一 1 是姓名,第 2 個元素是年齡。根據上述內容編寫一個列表。
>>> hu=[ ' huhu ' ,25]
?
同時,序列也可以包含其他的序列,因此,構建如下一個人員的信息的列表也是可的,這個列表就是你的數據庫:
>>> huhu = [ ' huhu ' ,25 ] >>> chongshi = [ ' chongshi ' ,32 ] >>> database = [huhu,chongshi] >>> database [[ ' huhu ' , 25], [ ' chongshi ' , 32]]
?
?
通用序列操作
所有序列類型都可以進行某些特定的操作。這些操作包括:索引( indexing )、分片( sliceing )、加( adding )、乘( multiplying )以及檢查某個元素是否屬于序列的成員(成員資格)。
?
索引
序列中的所有元素都是有編號的 ----- 從 0? 開始遞增。這些元素可以通過編號分別訪問,如下所示:
>>> greeting = ' chongshi ' >>> greeting[0] ' c ' >>> greeting[2 ] ' o '
?
使用負數索引時, python? 會從右邊,也就是從最后 1 個元素開始計數。最后 1 個元素的位置編號是 -1? (不是 -0 ,?因為那會和第 1 個元素重合):
>>> greeting = ' chongshi ' >>> greeting[-1 ] ' i ' >>> greeting[-2 ] ' h '
?
當然,我們也可以通過另一種方式使用所引,兩種方式的效果是一樣的:
>>> ' chongshi ' [0] ' c ' >>> ' chongshi ' [-1 ] ' i '
?
如果一個函數調用返回一個序列,那么可以直接對返回結果進行索引操作。例如,假設只對用戶輸入年份的第 4 個數字感興趣,那么,可以進行如下操作:
>>> fourth = raw_input( ' year: ' )[3 ] year: 2013 >>> fourth ' 3 '
提示:請試著敲擊代碼,更能助幫你理解。不要懶得動手。
?
索引示例:
# 根據給定的年月日以數字形式打印出日期 months = [ ' January ' , ' February ' , ' March ' , ' April ' , ' May ' , ' June ' , ' July ' , ' August ' , ' September ' , ' October ' , ' November ' , ' December ' ] # 以1-31的數字作為結尾的列表 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) # 記得要將月份和天數減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
?
分片
與使用索引來訪問單個元素類似,可以使用分片操作來訪問一琮范圍內的元素。分片通過冒號相隔的兩個索引來實現:
>>> tag = ' Python web site ' >>> tag[9:30] # 取第9個到第30個之間的字符 ' http://www.python.org ' >>> tag[32:-4] # 取第32到第-4(倒著數第4個字符) ' Python web site ' >>>
?
如果求 10 個數最后三個數:
>>> numbers = [0,1,2,3,4,5,6,7,8,9 ] >>> numbers[7:-1] # 從第7個數到 倒數第一個數 [7, 8] # 顯然這樣不可行 >>> numbers[7:10] # 從第7個數到第10個數 [7, 8, 9] # 這樣可行,索引10指向的是第11個元素。 >>> numbers[7:] # 可以置空最后一個索引解決 [7, 8, 9 ] >>> numbers[:3 ] [0, 1, 2 ] >>> numbers[:] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
?
分片示例:
# 對http://fnng.cnblogs.com形式的URL進行分割 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之間的數,步長為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]
?
序列相加
通過使用加號可以進行序列的連接操作:
>>> ' 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
?
正如錯誤提示,列表和字符串是無法連接接在一起的,盡管它他們都是序列。簡單來說,兩種相同類型的序列才能進行連接操作。
?
乘法
>>> ' python ' * 5 ' python python python python python ' >>> [25] * 10 [ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25]
?
如果想創建一個占用十個元素空間,卻不包括任何有用的內容的列表,可以用 Nome
>>> sequence = [None] * 10
>>>
sequence
[None, None, None, None, None, None, None, None, None, None]
?
序列(字符串)乘法示例:
# 以正確的寬度在居中的“盒子”內打印一個句子 # 注意,整數除法運算符(//)只能用在python 2.2 以及后續版本,在之前的版本中,只能用普通除法(/) 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 | | | +------------------------+
?
?
成員資格
?為了檢查一個值是否在序列中,可以使用 in? 運算符。該運算符和之前已經討論過的(例如? +? ,? *? 運算符)有一點不同。這個運算符檢查某個條件為真或假的( True?or?False? )。
in 運算符的例子:
>>> 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
?
長度、最小值和最大值 ?
內建函數 len 、 min? 和 max? 非常有用。 Len 函數返回序列中所包含元素的數量。 Min 函數和 max 函數則分別返回序列中最大和最小的元素。
>>> 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敲擊一下就理解是什么意思了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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