【Python使用】嘿馬python基礎(chǔ)入門全體系教程第4篇:容器:字符串咐汞、列表、元組儒鹿、字典,1.1 字符串特征【附代碼文檔】

本教程的知識(shí)點(diǎn)為:計(jì)算機(jī)組成 計(jì)算機(jī)是由什么組成的化撕? 1. 硬件系統(tǒng): 2. 軟件系統(tǒng): 目標(biāo) 運(yùn)算符的分類 1. 算數(shù)運(yùn)算符 2. 賦值運(yùn)算符 3. 復(fù)合賦值運(yùn)算符 判斷語句和循環(huán)語句 if嵌套 1. if嵌套的格式 2. if嵌套的應(yīng)用 if嵌套執(zhí)行流程 容器:字符串、列表挺身、元組侯谁、字典 字符串介紹 一. 認(rèn)識(shí)字符串 1.1 字符串特征 字符串輸出 容器:字符串、列表章钾、元組墙贱、字典 列表的相關(guān)操作 1添加元素("增"append, extend, insert)1 append extend 容器:字符串、列表贱傀、元組惨撇、字典 字典的常見操作1 1查看元素1 2修改元素2 3添加元素3 函數(shù)介紹 1什么是函數(shù)1 小總結(jié): 函數(shù)定義和調(diào)用 1定義函數(shù)1 多函數(shù)程序的基本使用流程 1. 使用全局變量 2. 使用函數(shù)的返回值、參數(shù) 3. 函數(shù)嵌套調(diào)用 函數(shù)返回值(二) 函數(shù)應(yīng)用:學(xué)生管理系統(tǒng) 遞歸函數(shù) 1什么是遞歸函數(shù)1 2遞歸函數(shù)的作用2 看階乘的規(guī)律 文件操作介紹 1什么是文件1 2文件的作用2 文件的打開與關(guān)閉 1打開文件1 面向?qū)ο缶幊探榻B 面向?qū)ο?1. 概述 2. 生活舉例 類和對(duì)象 init()方法 說明: 問題: 有參數(shù)的init()方法 說明: 繼承介紹以及單繼承 1. 現(xiàn)實(shí)中的繼承 2. 程序中的繼承 單繼承:子類只繼承一個(gè)父類 說明: super()的使用 問題: 知識(shí)點(diǎn): 私有權(quán)限 面向?qū)ο笕筇匦裕悍庋b府寒、繼承魁衙、多態(tài) 靜態(tài)方法和類方法 1. 類方法 2. 靜態(tài)方法 總結(jié) 異常 模塊 1Python中的模塊1 2import2 3from…import3 注意

完整筆記資料代碼->:https://gitee.com/yinuo112/Backend/tree/master/Python/嘿馬python基礎(chǔ)入門全體系教程/note.md

感興趣的小伙伴可以自取哦~


全套教程部分目錄:


部分文件圖片:

容器:字符串报腔、列表、元組剖淀、字典


學(xué)習(xí)目標(biāo):

  1. 能夠說出容器類型有什么用
  2. 能夠說出常用 Python 容器的名字
  3. 能夠說出切片語法的用途
  4. 能夠說出容器中的索引指的是什么
  5. 能夠說出如何定義一個(gè)字符串
  6. 能夠說出字符串容器的特性
  7. 能夠說出至少5個(gè)字符串方法名字和作用
  8. 能夠使用切片語法獲得指定索引區(qū)間的子串
  9. 能夠說出如何使用 while 和 for 循環(huán)來遍歷字符串
  10. 能夠說出如何定義一個(gè)列表
  11. 能夠說出列表容器和字符串容器的區(qū)別
  12. 能夠說出至少5個(gè)列表方法名字和作用
  13. 能夠使用切片語法獲得列表指定索引區(qū)間的元素
  14. 能夠說出如何使用 while 和 for 循環(huán)來遍歷列表中的元素
  15. 能夠說出如何定義一個(gè)列表
  16. 能夠說出元組和列表的區(qū)別
  17. 能夠說出如何使用 while 和 for 循環(huán)來遍歷元組中的元素
  18. 能夠說出元組支持哪些操作
  19. 能夠說出如何定義一個(gè)字典
  20. 能夠說出字典和列表的區(qū)別
  21. 能夠說出如何使用 for 循環(huán)來遍歷列表中的鍵纯蛾、值和鍵值對(duì)
  22. 能夠說出字典鍵和值的特點(diǎn)

字符串介紹

一. 認(rèn)識(shí)字符串

字符串是 Python 中最常用的數(shù)據(jù)類型。我們一般使用引號(hào)來創(chuàng)建字符串纵隔。創(chuàng)建字符串很簡單翻诉,只要為變量分配一個(gè)值即可。

a = 'hello world'
b = "abcdefg"
print(type(a))
print(type(b))

注意:控制臺(tái)顯示結(jié)果為<class 'str'>捌刮, 即數(shù)據(jù)類型為str(字符串)碰煌。

1.1 字符串特征

  • 一對(duì)引號(hào)字符串
name1 = 'Tom'
name2 = "Rose"
  • 三引號(hào)字符串
name3 = ''' Tom '''
name4 = """ Rose """
a = ''' i am Tom, 
        nice to meet you! '''

b = """ i am Rose, 
        nice to meet you! """

注意:三引號(hào)形式的字符串支持換行。

思考:如果創(chuàng)建一個(gè)字符串I'm Tom?

c = "I'm Tom"
d = 'I\'m Tom'

小總結(jié):

  • 雙引號(hào)或者單引號(hào)中的數(shù)據(jù)绅作,就是字符串

字符串輸出

1.格式化操作符

name = '君哥'
    position = '講師'
    address = '北京市'

    print('--------------------------------------------------')
    print("姓名:%s" % name)
    print("職位:%s" % position)
    print("公司地址:%s" % address)
    print('--------------------------------------------------')

結(jié)果:

--------------------------------------------------
    姓名: 君哥
    職位: 講師
    公司地址: 北京市
    --------------------------------------------------

2.f-strings

f-strings 提供一種簡潔易讀的方式, 可以在字符串中包含 Python 表達(dá)式. f-strings 以字母 'f' 或 'F' 為前綴, 格式化字符串使用一對(duì)單引號(hào)芦圾、雙引號(hào)、三單引號(hào)俄认、三雙引號(hào). 格式化字符串中

name = '君哥'
age = 33
format_string1 = f'我的名字是 {name}, 我的年齡是 {age}'
format_string2 = f"我的名字是 {name}, 我的年齡是 {age}"
format_string3 = F'''我的名字是 {name}, 我的年齡是 {age}'''
format_string4 = F"""我的名字是 {name}, 我的年齡是 {age}"""
format_string5 = f'3 + 5 = {3 + 5}'
a = 10
b = 20
format_string6 = f'3 + 5 = {a + b}'
  
  
# 兩個(gè)花括號(hào)會(huì)被替換為一個(gè)花括號(hào), 注意{{}} 不表示表達(dá)式
  
  
format_string7 = F'我的名字是 {{name}}, 我的年齡是 {{age}}'

print(format_string1)
print(format_string2)
print(format_string3)
print(format_string4)
print(format_string5)
print(format_string6)
print(format_string7)

字符串輸入

之前在學(xué)習(xí)input的時(shí)候个少,通過它能夠完成從鍵盤獲取數(shù)據(jù),然后保存到指定的變量中梭依;

注意:input獲取的數(shù)據(jù)稍算,都以字符串的方式進(jìn)行保存,即使輸入的是數(shù)字役拴,那么也是以字符串方式保存

demo:

userName = input('請(qǐng)輸入用戶名:')
    print("用戶名為:%s" % userName)

    password = input('請(qǐng)輸入密碼:')
    print("密碼為:%s" % password)

結(jié)果:(根據(jù)輸入的不同結(jié)果也不同)

請(qǐng)輸入用戶名:itheima
    用戶名為: itheima
    請(qǐng)輸入密碼:haohaoxuexitiantianxiangshang
    密碼為: haohaoxuexitiantianxiangshang

下標(biāo)和切片

1. 下標(biāo)索引

所謂“下標(biāo)”糊探,就是編號(hào),就好比超市中的存儲(chǔ)柜的編號(hào)河闰,通過這個(gè)編號(hào)就能找到相應(yīng)的存儲(chǔ)空間

  • 生活中的 "下標(biāo)"

超市儲(chǔ)物柜

高鐵二等座

高鐵一等座

綠皮車

  • 字符串中"下標(biāo)"的使用

列表與元組支持下標(biāo)索引好理解科平,字符串實(shí)際上就是字符的數(shù)組,所以也支持下標(biāo)索引姜性。

如果有字符串:name = 'abcdef'瞪慧,在內(nèi)存中的實(shí)際存儲(chǔ)如下:

如果想取出部分字符,那么可以通過下標(biāo)的方法,(注意python中下標(biāo)從 0 開始)

name = 'abcdef'

   print(name[0])
   print(name[1])
   print(name[2])

運(yùn)行結(jié)果:

a
b
c

2. 切片

切片是指對(duì)操作的對(duì)象截取其中一部分的操作。字符串荸哟、列表、元組都支持切片操作妓湘。

切片的語法:[起始:結(jié)束:步長]

注意:選取的區(qū)間從"起始"位開始,到"結(jié)束"位的前一位結(jié)束(不包含結(jié)束位本身)乌询,步長表示選取間隔榜贴。

我們以字符串為例講解。

如果取出一部分妹田,則可以在中括號(hào)[]中唬党,使用:

name = 'abcdef'

     print(name[0:3]) # 取 下標(biāo)0~2 的字符

運(yùn)行結(jié)果:

name = 'abcdef'

     print(name[0:5]) # 取 下標(biāo)為0~4 的字符

運(yùn)行結(jié)果:
name = 'abcdef'

     print(name[3:5]) # 取 下標(biāo)為3鹃共、4 的字符

運(yùn)行結(jié)果:
name = 'abcdef'

     print(name[2:]) # 取 下標(biāo)為2開始到最后的字符

運(yùn)行結(jié)果:
name = 'abcdef'

     print(name[1:-1]) # 取 下標(biāo)為1開始 到 最后第2個(gè)  之間的字符

運(yùn)行結(jié)果:
>>> a = "abcdef"
 >>> a[:3]
 'abc'
 >>> a[::2]
 'ace'
 >>> a[5:1:2] 
 ''
 >>> a[1:5:2]
 'bd'
 >>> a[::-2]
 'fdb' 
 >>> a[5:1:-2]
 'fd'

想一想

  • (面試題)給定一個(gè)字符串a(chǎn)Str, 請(qǐng)反轉(zhuǎn)字符串
  
  
# 索引是通過下標(biāo)取某一個(gè)元素
  
  
  
  
# 切片是通過下標(biāo)去某一段元素
  
  

s = 'Hello World!'

print(s[4])

print(s)

print(s[:]) # 取出所有元素(沒有起始位和結(jié)束位之分),默認(rèn)步長為1

print(s[1:]) # 從下標(biāo)為1開始驶拱,取出 后面所有的元素(沒有結(jié)束位)

print(s[:5])  # 從起始位置開始霜浴,取到 下標(biāo)為5的前一個(gè)元素(不包括結(jié)束位本身)

print(s[:-1]) # 從起始位置開始,取到 倒數(shù)第一個(gè)元素(不包括結(jié)束位本身)

print(s[-4:-1]) # 從倒數(shù)第4個(gè)元素開始蓝纲,取到 倒數(shù)第1個(gè)元素(不包括結(jié)束位本身)

print(s[1:5:2]) # 從下標(biāo)為1開始坷随,取到下標(biāo)為5的前一個(gè)元素,步長為2(不包括結(jié)束位本身)

  
  
# python 字符串快速逆置
  
  
print(s[::-1])  # 從后向前驻龟,按步長為1進(jìn)行取值

字符串常見操作

如有字符串mystr = 'hello world itcast and itcastcpp',以下是常見的操作

<1>find1>

檢測 str 是否包含在 mystr中缸匪,如果是返回開始的索引值翁狐,否則返回-1

  1. 語法
字符串序列.find(子串, 開始位置下標(biāo), 結(jié)束位置下標(biāo))
  1. 示例
mystr.find(str, start=0, end=len(mystr))

<2>index2>

跟find()方法一樣,只不過如果str不在 mystr中會(huì)報(bào)一個(gè)異常.

  1. 語法
字符串序列.index(子串, 開始位置下標(biāo), 結(jié)束位置下標(biāo))
  1. 示例
mystr.index(str, start=0, end=len(mystr))

<3>count3>

返回 str在start和end之間 在 mystr里面出現(xiàn)的次數(shù)

  1. 語法
字符串序列.count(子串, 開始位置下標(biāo), 結(jié)束位置下標(biāo))
  1. 示例
mystr.count(str, start=0, end=len(mystr))

<4>replace4>

把 mystr 中的 str1 替換成 str2,如果 count 指定凌蔬,則替換不超過 count 次.

  1. 語法
字符串序列.replace(舊子串, 新子串, 替換次數(shù))
  1. 示例
mystr.replace(str1, str2,  mystr.count(str1))

<5>split5>

以 str 為分隔符切片 mystr露懒,如果 maxsplit有指定值,則僅分隔 maxsplit 個(gè)子字符串

  1. 語法
字符串序列.split(分割字符, num)
  1. 示例
mystr.split(str=" ", 2)

<6>capitalize6>

把字符串的第一個(gè)字符大寫

mystr.capitalize()

<7>title7>

把字符串的每個(gè)單詞首字母大寫

>>> a = "hello itcast"
>>> a.title()
'Hello Itcast'

<8>startswith8>

檢查字符串是否是以 hello 開頭, 是則返回 True砂心,否則返回 False

  1. 語法
字符串序列.startswith(子串, 開始位置下標(biāo), 結(jié)束位置下標(biāo))

2.示例

mystr.startswith(hello)

<9>endswith9>

檢查字符串是否以obj結(jié)束懈词,如果是返回True,否則返回 False.

mystr.endswith(obj)

<10>lower10>

轉(zhuǎn)換 mystr 中所有大寫字符為小寫

mystr.lower()

<11>upper11>

轉(zhuǎn)換 mystr 中的小寫字母為大寫

mystr.upper()

<12>ljust12>

返回一個(gè)原字符串左對(duì)齊,并使用空格填充至長度 width 的新字符串

mystr.ljust(width)

<13>rjust13>

返回一個(gè)原字符串右對(duì)齊,并使用空格填充至長度 width 的新字符串

mystr.rjust(width)

<14>center14>

返回一個(gè)原字符串居中,并使用空格填充至長度 width 的新字符串

mystr.center(width)

<15>lstrip15>

刪除 mystr 左邊的空白字符

mystr.lstrip()

<16>rstrip16>

刪除 mystr 字符串末尾的空白字符

mystr.rstrip()

<17>strip17>

刪除mystr字符串兩端的空白字符

>>> a = "\n\t itcast \t\n"
>>> a.strip()
'itcast'

<18>rfind18>

類似于 find()函數(shù),不過是從右邊開始查找.

mystr.rfind(str, start=0,end=len(mystr) )

<19>rindex19>

類似于 index()辩诞,不過是從右邊開始.

mystr.rindex( str, start=0,end=len(mystr))

<20>partition20>

把mystr以str分割成三部分,str前坎弯,str和str后

mystr.partition(str)

<21>rpartition21>

類似于 partition()函數(shù),不過是從右邊開始.

mystr.rpartition(str)

<22>splitlines22>

按照行分隔,返回一個(gè)包含各行作為元素的列表

mystr.splitlines()

<23>isalpha23>

如果 mystr 所有字符都是字母 則返回 True,否則返回 False

mystr.isalpha()

<24>isdigit24>

如果 mystr 只包含數(shù)字則返回 True 否則返回 False.

mystr.isdigit()

<25>isalnum25>

如果 mystr 所有字符都是字母或數(shù)字則返回 True,否則返回 False

mystr.isalnum()

<26>isspace26>

如果 mystr 中只包含空格译暂,則返回 True抠忘,否則返回 False.

mystr.isspace()

<27>join27>

mystr 中每個(gè)元素后面插入str,構(gòu)造出一個(gè)新的字符串

  1. 語法
字符或子串.join(多字符串組成的序列)
  1. 示例
mystr.join(str)

想一想

  • (面試題)給定一個(gè)字符串a(chǎn)Str,返回使用空格或者'\t'分割后的倒數(shù)第二個(gè)子串

列表介紹

想一想:

前面學(xué)習(xí)的字符串可以用來存儲(chǔ)一串信息外永,那么想一想崎脉,怎樣存儲(chǔ)咱們班所有同學(xué)的名字呢?

定義100個(gè)變量伯顶,每個(gè)變量存放一個(gè)學(xué)生的姓名可行嗎囚灼?有更好的辦法嗎?

答:

列表

<1>列表的格式1>

變量A的類型為列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']

比C語言的數(shù)組強(qiáng)大的地方在于列表中的元素可以是不同類型的

testList = [1, 'a']

<2>打印列表2>

demo:

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
    print(namesList[0])
    print(namesList[1])
    print(namesList[2])

結(jié)果:

xiaoWang
    xiaoZhang
    xiaoHua
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末祭衩,一起剝皮案震驚了整個(gè)濱河市灶体,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌汪厨,老刑警劉巖赃春,帶你破解...
    沈念sama閱讀 212,185評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異劫乱,居然都是意外死亡织中,警方通過查閱死者的電腦和手機(jī)锥涕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狭吼,“玉大人层坠,你說我怎么就攤上這事〉篌希” “怎么了破花?”我有些...
    開封第一講書人閱讀 157,684評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長疲吸。 經(jīng)常有香客問我座每,道長,這世上最難降的妖魔是什么摘悴? 我笑而不...
    開封第一講書人閱讀 56,564評(píng)論 1 284
  • 正文 為了忘掉前任峭梳,我火速辦了婚禮,結(jié)果婚禮上蹂喻,老公的妹妹穿的比我還像新娘葱椭。我一直安慰自己,他們只是感情好口四,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,681評(píng)論 6 386
  • 文/花漫 我一把揭開白布孵运。 她就那樣靜靜地躺著,像睡著了一般蔓彩。 火紅的嫁衣襯著肌膚如雪治笨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,874評(píng)論 1 290
  • 那天粪小,我揣著相機(jī)與錄音大磺,去河邊找鬼。 笑死探膊,一個(gè)胖子當(dāng)著我的面吹牛杠愧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逞壁,決...
    沈念sama閱讀 39,025評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼流济,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腌闯?” 一聲冷哼從身側(cè)響起绳瘟,我...
    開封第一講書人閱讀 37,761評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎姿骏,沒想到半個(gè)月后糖声,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,217評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,545評(píng)論 2 327
  • 正文 我和宋清朗相戀三年蘸泻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琉苇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,694評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡悦施,死狀恐怖并扇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抡诞,我是刑警寧澤穷蛹,帶...
    沈念sama閱讀 34,351評(píng)論 4 332
  • 正文 年R本政府宣布,位于F島的核電站昼汗,受9級(jí)特大地震影響肴熏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜顷窒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,988評(píng)論 3 315
  • 文/蒙蒙 一扮超、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蹋肮,春花似錦、人聲如沸璧疗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽崩侠。三九已至漆魔,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間却音,已是汗流浹背改抡。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評(píng)論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留系瓢,地道東北人阿纤。 一個(gè)月前我還...
    沈念sama閱讀 46,427評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像夷陋,于是被迫代替她去往敵國和親欠拾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,580評(píng)論 2 349

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