python基礎(chǔ)類型(一):字符串和列表

一、字符串

與 C語言相比快骗,Python沒有字符類型娜庇,只有字符串類型。

Python中的字符串是用雙引號或單引號包裹的一串字符方篮。如:

s = 'a'
s = 'aaa'
s = "a"
s = "aaa"
s = '"""'
s = "'''"
s = "''"''"

注意到最后三個的單雙引號是嵌套使用的名秀,但是最后一個的使用方法是錯誤的,因為當我們混合使用兩種引號時必須有一種用來劃分字符串的邊界藕溅,即在兩邊的引號不能出現(xiàn)在字符串當中匕得,否則 Python解釋器會報錯。

1. 截取字符串

其他的語言中一般將截取字符串定義為一個方法巾表,比如 C語言中的 substr方法就可以返回字符串指定位置之間的一個字串汁掠。

但是在 Python中我們采用一種更簡潔直觀的方式,看如下代碼:

s = "i_am_a_sher."

print('s is:', s)
print('s[0]: ', s[0])
print('s[1:]: ', s[1:])
print('s[1:3]: ', s[1:3])
print('s[1::2]: ', s[1::2])
print('s[-1]: ', s[-1])
print('s[-3:-1]: ', s[-3:-1])
print('s[-3::2]: ', s[-3::2])

'''
s is: i_am_a_sher.
s[0]:  i
s[1:]:  _am_a_sher.
s[1:3]:  _a
s[1::2]:  _mase.
s[-1]:  .
s[-3:-1]:  er
s[-3::2]:  e.
'''

在 Python中字符串被視為一個可迭代的對象集币,可迭代指實現(xiàn)了 iter接口考阱,可以直接使用for t in object語法的對象,簡單來講可以把字符串看作一個存儲字符的數(shù)組鞠苟。

所以當我們打印s[0]時會將字符串的第一個字母打印出來羔砾。

Python還為字符串切片提供了非常便利的操作,比如:

s[1:]表示 s中第二個及以后的所有字符偶妖。

s[1:3]表示 s中第二個到到第四個字符之間的所有字符(包括前者但不包括后者姜凄,即包括第二個但不包括第四個)。

s[1::2]表示從 s中第二個字符開始取趾访,每移動兩個字符取一個态秧,所以我們?nèi)〉降慕Y(jié)果是第 2、4扼鞋、6申鱼、8、10個字符云头。

當給出的數(shù)字為負數(shù)時捐友,表示從字符串的末尾開始計數(shù),所以s[-1]表示字符串倒數(shù)第一個字符溃槐。

這里使用 -1表示倒數(shù)第一個字符匣砖,0表示正數(shù)第一個字符(因為沒有 -0)。

::后面的數(shù)字為正時表示從左到右計數(shù),為負數(shù)時表示從右到左計數(shù)猴鲫。

2. 拼接字符串

拼接字符串我們直接使用+对人,如:

s_1 = 'aaa'
s_2 = 'bbb'
print('s_1 + s_2:', s_1+s_2)
"""
s_1 + s_2: aaabbb
"""

3.字符串的常用方法

  1. encode(str: codec)->bytes:接受一個編碼字符串作為參數(shù),返回編碼后的二進制編碼拂共,

    如:s.encode('utf-8')

  2. split(str: spl)->list:一給定的字符串 spl將原字符串分割為多個字串牺弄,并返回一個字串列表

    如:s.split('_'),結(jié)果為:['i', 'am', 'a', 'sher']

  3. strip():去除字符串兩端的空字符(包括換行宜狐、空格势告、制表符等其他不可見的符號),lstrip()rstrip()則分別去除字符串左邊和右邊的空字符抚恒。

  4. replace(str: old, str: new)->str:替換字符串中的某些字串培慌,要替換的字串通過 old給出,用來替換的字串通過 new給出柑爸,如:s.replace('a', 'b')的結(jié)果為:i_bm_b_sher.

  5. join(list: l)->str:用原字符串將給定的列表拼接成一個字符串吵护。

    如:'_'.join(['i', 'am', 'a', 'sher.'])的結(jié)果就是i_am_a_sher..

二、列表

Python中的列表和數(shù)組類似表鳍,不過與數(shù)組只能存儲一種元素相比馅而,一個列表中可以存儲任意元素,比如:

l = ['a', 1, ['a']]

在列表 l中我們存儲了三種數(shù)據(jù)類型譬圣,分別是字符串瓮恭、整數(shù)和列表

與數(shù)組相同的是,我們可以使用下表來訪問列表中的元素厘熟,比如:

l[0]   # 'a'
l[1]   # 1
l[2]   # ['a']
l[3]   # IndexError

同樣屯蹦,如果訪問了一個不存在的下標,程序就會拋出 IndexError錯誤绳姨。

1. 截取列表

截取列表的操作和截取字符串的操作完全相同登澜,可以參考截取字符串。

2. 合并列表

合并列表可以像拼接字符串一樣使用+將兩個列表合并飘庄,如:

l_1 = [1,2,3,4]
l_2 = [5,6,7,8]
l_3 = l_1 + l_2
# l_3 = [1,2,3,4,5,6,7,8]

也可以使用 extend(list: l)方法將要合并的列表直接追加到原來的列表后面脑蠕。

注意:extend()方法沒有返回值,這個方法直接在原來的列表上進行操作跪削。

3. 列表的常用方法

  1. append(any: element):向列表尾部添加一個元素

  2. insert(any: element, int: index):向列表中特定的位置插入一個元素谴仙,原來在那個位置的元素及其后面的所有元素均向后移動一個位置。

  3. index(any: element)->int:返回所給元素在列表中從左到右第一個匹配的元素的位置碾盐,若所給元素不在列表中則拋出 ValueError錯誤晃跺。

  4. remove(any: value):將從左到右第一個匹配的元素從列表中移除,如果所給值不在列表中則拋出 ValueError錯誤毫玖。

  5. sort():將列表中的元素進行排序掀虎,直接在原列表中進行操作凌盯,沒有返回值。

  6. pop():從列表的右邊取出一個元素涩盾,并將該元素從列表中移除十气。

  7. reverse():反轉(zhuǎn)列表励背,如:

    l = [1,2,3,4,5]
    l.reverse()
    # l = [5,4,3,2,1]
    
  8. 關(guān)鍵字 in的使用:可以用關(guān)鍵字 in來判斷一個元素是否在列表中春霍,如:

    l = [1,2,3,4,5]
    1 in l # True
    6 in l # False
    #可以使用 in和 index()配合來獲取元素在列表中的位置
    def indexOf(l, element):
        if element in l:
            index = l.index(element)
        else:
            index = -1
        return index
    #可以使用 in和 remove()將元素從列表中移除
    def remove(l, element):
        if element in l:
            l.remove(element)
        else:
            pass
    
    
  9. for遍歷列表, 如:

    l = [1,2,3,4,5,6,7,8]
    # 如果要將 l中的元素逐個打印出來叶眉,其他的方法是:
    for i in range(len(l)):
        print(l[i])
    # 但是在 python中不需要這么麻煩
    for t in l:
        print(l)
    

三址儒、練習

1. 日期格式轉(zhuǎn)換

有多種日期格式:2018/10/28、2018.10.28衅疙、20181028莲趣、2018-10-28

現(xiàn)在我們需要編寫一個程序?qū)⑶叭N格式轉(zhuǎn)換為第四種格式。

要求:

  1. 不能使用 python類庫
  2. 將代碼封裝成一個函數(shù):date_trans(str: date)->str接受一個字符串輸入饱溢,輸出第四種日期格式
  3. 需要處理不規(guī)范輸入引起的錯誤喧伞,當遇到不規(guī)范輸入時拋出 ValueError錯誤并給出提示

2. 雙向隊列

現(xiàn)有函數(shù)簽名:b_pop(list: l, str: direction)

該函數(shù)實現(xiàn)的功能是:當 direction的值為 'left'時從列表的左邊取出一個元素返回,當 direction的值為 'right'時從列表的右邊取出一個元素返回绩郎,當列表為空時返回 None潘鲫。

要求:

  1. 在取出元素前后列表原有的元素排列方向不變
  2. 當 l和 direction的值非法時拋出 ValueError錯誤并給出提示
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市肋杖,隨后出現(xiàn)的幾起案子溉仑,更是在濱河造成了極大的恐慌,老刑警劉巖迈着,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姆蘸,死亡現(xiàn)場離奇詭異境蔼,居然都是意外死亡,警方通過查閱死者的電腦和手機振定,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肉拓,“玉大人吩案,你說我怎么就攤上這事〉鄞兀” “怎么了徘郭?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長丧肴。 經(jīng)常有香客問我残揉,道長,這世上最難降的妖魔是什么芋浮? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任抱环,我火速辦了婚禮壳快,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘镇草。我一直安慰自己眶痰,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布梯啤。 她就那樣靜靜地躺著竖伯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪因宇。 梳的紋絲不亂的頭發(fā)上七婴,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音察滑,去河邊找鬼打厘。 笑死,一個胖子當著我的面吹牛贺辰,可吹牛的內(nèi)容都是我干的户盯。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼饲化,長吁一口氣:“原來是場噩夢啊……” “哼莽鸭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起滓侍,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤蒋川,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后撩笆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捺球,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年夕冲,在試婚紗的時候發(fā)現(xiàn)自己被綠了氮兵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡歹鱼,死狀恐怖泣栈,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情弥姻,我是刑警寧澤南片,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站庭敦,受9級特大地震影響疼进,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秧廉,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一伞广、第九天 我趴在偏房一處隱蔽的房頂上張望拣帽。 院中可真熱鬧,春花似錦嚼锄、人聲如沸减拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拧粪。三九已至,卻和暖如春刊苍,著一層夾襖步出監(jiān)牢的瞬間既们,已是汗流浹背濒析。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工正什, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人号杏。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓婴氮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親盾致。 傳聞我的和親對象是個殘疾皇子主经,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 本節(jié)要介紹的是Python里面常用的幾種數(shù)據(jù)結(jié)構(gòu)。通常情況下骏啰,聲明一個變量只保存一個值是遠遠不夠的节吮,我們需要將一組...
    小黑y99閱讀 65,190評論 0 9
  • 事件:從早上起床開始,明明定的是5點30分的鬧鐘判耕,起來后又睡了十分鐘透绩。上午忙完工作,回來十一點壁熄,明明可以做些功課帚豪,...
    愛和健康的種子閱讀 248評論 0 0
  • 追求安逸是我們的天性狸臣,不愿改變是我們的習慣。然而方仿,生活中哪有什么一直的安逸固棚,哪有一成不變的生活统翩。 我兩次得了重病,...
    吳斌1987閱讀 226評論 0 0
  • 忘了有多久此洲,我都不曾執(zhí)起過手中的筆厂汗,我就像在宇宙中漂流的殘骸,雖游蕩了很遠呜师,卻不曾畫下過軌跡娶桦。 我曾想:這輩子,我...
    剎那丨永恒閱讀 192評論 0 2
  • 柏林少女joy閱讀 73評論 0 0