1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        第四章4:使用列表

        共 6086字,需瀏覽 13分鐘

         ·

        2021-03-05 15:24

        第四章4:使用列表

        現(xiàn)在我們已經(jīng)學(xué)習(xí)了什么是列表和如何使用循環(huán),我們今天將學(xué)習(xí)如何使用列表。在Python中,列表對(duì)于任何程序都非常重要,所以,我們需要理解我們什么時(shí)候使用它們。

        檢查長(zhǎng)度

        通常我們將需要知道一個(gè)列表中包含多少個(gè)對(duì)象。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們使用len()函數(shù):

        # 檢查列表中對(duì)象的數(shù)量
        nums = [51015]
        length = len(nums)   # len()返加一個(gè)整數(shù)
        print(length)

        繼續(xù)并運(yùn)行這一代碼塊。這個(gè)代碼塊將輸出整數(shù)3。我們后面將多次使用length函數(shù),無(wú)論是檢查一個(gè)空列表還是在range函數(shù)中使用它來(lái)角確定一個(gè)循環(huán)的次數(shù)。

        列表切片

        回顧前幾周,我們討論了一個(gè)字符的切片。列表切片也是同樣的方式,以便于我們能夠獲得特定的對(duì)象。切片和range()函數(shù)具有一樣的參數(shù),如開(kāi)始、結(jié)束、步長(zhǎng):

        # 用切片獲取一個(gè)列表中的特定對(duì)象
        print(nums[1:3])  # 輸出結(jié)果為索引位置1和2上的對(duì)象
        print(nums[:2])  # 輸出結(jié)果為索引位置0和1上的對(duì)象
        print(nums[::2])  # 輸出結(jié)果為索引位置0,2和4上的對(duì)象,即索引從數(shù)字0開(kāi)始,每次遞增2
        print(nums[-2:])  # 輸出結(jié)果為列表中最后兩個(gè)的對(duì)象

        繼續(xù)并運(yùn)行這一代碼塊。輸出結(jié)果顯示在每個(gè)語(yǔ)句后邊的注釋中。我們使用方括號(hào)表示法,正如我們?cè)L問(wèn)索引一樣,只是我們通過(guò)冒號(hào)分開(kāi)其他值,而順序剛保持為[開(kāi)始:停止:步長(zhǎng)]。方括號(hào)表示法默認(rèn)從0開(kāi)始,步長(zhǎng)為1。如果你想使用默認(rèn)值,可以選擇不使用這些值。對(duì)于步長(zhǎng)為正而開(kāi)始值為負(fù)將會(huì)使切片從后向前獲取數(shù)據(jù)。如果從開(kāi)始位置或停止的位置使用負(fù)數(shù),則切片將從后面開(kāi)始或停止。這意味著,如果你將停止位置上為-5,切片獲取的對(duì)象將從列表的開(kāi)頭一直切到列表結(jié)束之前的五個(gè)元素。

        增加元素

        當(dāng)你需要向你的現(xiàn)有列表中添元素,Python有兩個(gè)不同的方法來(lái)實(shí)現(xiàn)這一目標(biāo)。

        .append()

        Append方法總是將值添加到列表內(nèi)元素的后面。讓我們來(lái)看一下:

        # 使用append方法將增加一個(gè)元素到列表內(nèi)元素的后面
        nums = [1020]
        print(nums)  # 輸出[10, 20]
        nums.append(5)
        print(nums)  # 輸出[10, 20, 5]

        繼續(xù)并運(yùn)行這一代碼塊。我們創(chuàng)建了一個(gè)包含兩個(gè)元素的列表,然后將數(shù)值5添加到列表的后面。

        .insert()

        增加一個(gè)元素到列表中的第二個(gè)方法是使用insert函數(shù)。這一方法需要一個(gè)索引值才能將增加的值插入到指定位置。讓我們來(lái)看一個(gè)例子:

        # 在列表最開(kāi)始的位置增加一個(gè)數(shù)值
        words = ['ball''base']
        print(words) # 輸出結(jié)果為['ball', 'base']
        words.insert(0'golve'# 第一個(gè)參數(shù)是索引,第二個(gè)是數(shù)值
        print(words) # 輸出結(jié)果為['golve', 'ball', 'base']

        繼續(xù)并運(yùn)行這一代碼塊。輸出結(jié)果為['glove','ball','base']。glove現(xiàn)在在零索引位置上,因?yàn)槲覀冊(cè)趇nsert方法中指定了在該索引位置上插入數(shù)值。

        移除元素

        從一個(gè)列表中移除元素有多種方式,接下來(lái)我主要介紹其中的兩種方法。

        .pop()

        默認(rèn)情況下,pop方法會(huì)移除列表中最后一個(gè)元素,當(dāng)然,你也可以指定索引去移除元素。這種方法也被廣泛的用來(lái)存儲(chǔ)被移除的元素。當(dāng)使用pop方法時(shí),它不僅稱除了相應(yīng)的元素,而且還會(huì)返回這個(gè)元素。這就可以讓我們使用一個(gè)變量來(lái)存儲(chǔ)從列表中移除的那個(gè)元素,以便之后使用:

        # 使用pop方法移除元素并將其存儲(chǔ)到一個(gè)變量中以便之后使用
        items = [5'ball'True]
        items.pop()                    # 默認(rèn)移除列表中最后一個(gè)元素
        removed_item = items.pop(0)    # 移除元素5并存儲(chǔ)進(jìn)removed_item變量中
        print(removed_item, '\n', items)

        繼續(xù)并運(yùn)行這一代碼塊。使用pop方法,我們可以看到它首先移除了列表中最后一個(gè)元素True,那么,接著移除了索引位置0上的元素5。當(dāng)整數(shù)5移除列表時(shí),我們同時(shí)將其保存到一個(gè)新變量中,然后將其與新列表一起輸出。

        .remove()

        remove方法允許我們基于給定的元素來(lái)從列表中移除相應(yīng)的元素:

        # 用一個(gè)try和except來(lái)使用remove方法
        sports = ['bseball''soccer''football''hockey']
        try:
            sports.remove('soccer')
        except:
            print('That item does not exist in the list')
        print(sports)

        繼續(xù)并運(yùn)行這一代碼塊。在這里,我們將看到結(jié)果輸出的是沒(méi)有元素soccer的列表,這是因?yàn)樵豷occer剛剛已經(jīng)被我們刪除了。另外要說(shuō)明的一點(diǎn)是,我們之所以嘗試使用try和except結(jié)構(gòu)語(yǔ)句,是因?yàn)槿绻斜碇胁淮嬖谠亍皊occer”,則可以防止該程序崩潰。

        使用數(shù)值列表數(shù)據(jù)

        對(duì)于我們使用的數(shù)值型數(shù)據(jù),Python為我們提供了一些函數(shù)來(lái)了解數(shù)值型數(shù)據(jù)的特征,如min(求最小值)、 max(求最大值)和sum(求和)。盡管這些是最常用的一些函數(shù),但是我們?nèi)匀挥懈嗟暮瘮?shù)可使用:

        # 使用min,max和sum
        nums = [539]
        print(min(nums))   # 輸出列表中最小值
        print(max(nums))   # 輸出列表中最大值
        print(sum(nums))   # 輸出列表中所有數(shù)值的和

        繼續(xù)并運(yùn)行這一代碼塊。輸出結(jié)果將為3、9和17。正如其名稱所述,他們將找到列表中的最小值和最大值。sum函數(shù)則將簡(jiǎn)單地將列表中所有數(shù)字加總求和。

        列表排序

        在實(shí)際應(yīng)用中,你經(jīng)常會(huì)使用一個(gè)有序的列表。在Python中有兩種方法可以實(shí)現(xiàn)這一目標(biāo),但這兩種方法又存在一定差異。一個(gè)會(huì)直接覆蓋原始列表,另一個(gè)則會(huì)返回一個(gè)新創(chuàng)建的列表。

        sorted()

        sorted函數(shù)無(wú)論對(duì)數(shù)值型列表還是字符型列表都是有效的,但對(duì)于二者混合的列表則是無(wú)效的。sorted函數(shù)結(jié)果會(huì)返回一個(gè)列表的副本,所以它不會(huì)改變?cè)剂斜?。通常?lái)說(shuō),如果你需要保留原始且完整的列表,則使用這一函數(shù):

        # 對(duì)于數(shù)值型列表和字符型列表使用sorted方法排序
        nums = [5802]
        sorted_nums = sorted(nums)   # 使用sorted方法排序后存儲(chǔ)在一個(gè)新變量中
        print(nums, sorted_nums)     # 輸出原始的列表和排序后的列表

        繼續(xù)并運(yùn)行這一代碼塊。你會(huì)注意到,在聲明nums列表時(shí),其輸出結(jié)果仍是保持原始順序的列表。要獲取新的排序后列表,我們只需將其保存到一個(gè)新變量中即可。

        .sort()

        sort方法的使用目的與我們上面所講的sorted函數(shù)目的相同;但是,不同的是它會(huì)直接更改并覆蓋原始列表:

        # 使用.sort()函數(shù)對(duì)列表進(jìn)行排序
        nums = [5083]
        nums.sort()           # 真接更改并覆蓋原始列表
        print(nums)

        繼續(xù)并運(yùn)行這一代碼塊。結(jié)果輸出將是一個(gè)正確排序后的列表。只需記住,nums變量現(xiàn)在已更改,因?yàn)?sort()函數(shù)直接更改了變量的值。

        條件和列表

        在實(shí)際使用列表時(shí),我們通常需要檢查列表中的某一元素量否存在。現(xiàn)在我將介紹如何在一個(gè)列表中運(yùn)行條件語(yǔ)句。將列表和條件語(yǔ)句相結(jié)合的原因有很多。以下幾個(gè)例子只是其中的幾種原因。

        使用“in”和“not in”關(guān)鍵詞

        上周介紹條件語(yǔ)句時(shí),我們已經(jīng)看到了這些關(guān)鍵字的使用。使用列表時(shí),它們的目的是在列表中快速查找對(duì)應(yīng)的值:

        # 在一個(gè)列表中使用條件語(yǔ)句
        names = ['Jack''Robert''Mary']
        if 'Mary' in names:
            print('found')         # 當(dāng)Mary在列表中將會(huì)運(yùn)行這一代碼
        if 'Jimmy' not in names:
            print('not found')     # 當(dāng)Jimmy不在列表中將會(huì)運(yùn)行這一代碼

        繼續(xù)并運(yùn)行這一代碼塊。輸出結(jié)果為“found”和“not found”。在第一個(gè)語(yǔ)句中,我們?cè)噲D查看列表中是否存在“Mary”,結(jié)果確實(shí)存在。第二個(gè)條件語(yǔ)句檢查“ Jimmy”是否不存于列表中,這也是正確的,因此它也可以運(yùn)行。

        檢查一個(gè)空列表

        對(duì)于空列表的檢查有很多原因,提及最多的就是確保在你的程序中不會(huì)引發(fā)任何錯(cuò)誤,接下來(lái),讓我們來(lái)看如何對(duì)空列表進(jìn)行檢查:

        # 使用條件語(yǔ)名來(lái)查看列表是否為空
        nums = []
        if not nums:        # 等價(jià)于語(yǔ)法:if nums = []
            print('empty')

        繼續(xù)并運(yùn)行這一代碼塊。這將會(huì)輸出“empty”。它在注釋我們已經(jīng)提到,但我們也可以檢查一下是否等于空括號(hào)。在這里,我想向你展示如何使用“ not”關(guān)鍵字。為了檢查列表的元素,你將寫(xiě)下這樣代碼:

        if nums

        循環(huán)和列表

        你能使用for循環(huán)和while循環(huán)去迭代列表中的元素。

        使用for循環(huán)

        當(dāng)使用for循環(huán)迭代列表中的元素時(shí),語(yǔ)法上看起來(lái)像之前我們使用的range()函數(shù)。然而,這次我們使用一個(gè)暫時(shí)變量,關(guān)鍵詞in和列表名稱。對(duì)于每一次迭代,這個(gè)臨時(shí)變量都會(huì)被分配一個(gè)新的元素的值。讓我們來(lái)試試看。

        # 使用for循環(huán)列印列表中的所有元素
        sports = ['Baseball''Hockey''Football''Basketball']
        for sport in sports:
            print(sport)

        繼續(xù)并運(yùn)行這一代碼塊。在這里,我們可以看到這一代碼塊將輸出列表中的每個(gè)元素。在第一次迭代期間,臨時(shí)變量“ sport”被分配為“ Baseball”,一旦將其打印出來(lái),它將移至下一個(gè)列表中的元素。

        使用while循環(huán)

        while循環(huán)通常用于條件循環(huán)。while循環(huán)一個(gè)比較典型的用法就是移除列表中的元素。while循環(huán)還有很多用法,這僅僅是眾多用法中的一種:

        # 使用while循環(huán)移除一個(gè)特定值
        names = ['Bob''Jack''Rob''Bob''Robert']
        while 'Bob' in names:
            names.remove('Bob')   # 移除列表中的所有的Bob字符
        print(names)

        繼續(xù)并運(yùn)行這一代碼塊。變量names輸出結(jié)果將是沒(méi)有字符“ Bob”的列表。我們將while循環(huán)與條件語(yǔ)句結(jié)合使用,當(dāng)檢查到列表中的“ Bob”值后,然后刪除它,直到條件不再成立為止。

        星期四練習(xí)

        1.移除重復(fù)值:從下面的列表中移除全部重復(fù)值,輸出結(jié)果應(yīng)是[‘Bob’, ‘Kenny’, ‘Amanda’]


        小提示:使用.count()方法并結(jié)合while循環(huán)。


        2.用戶輸入:使用一個(gè)while循環(huán)來(lái)持持續(xù)要求用戶輸入一個(gè)詞語(yǔ),直到用戶輸入“quit”。一旦用戶輸入一個(gè)詞,就將這個(gè)詞添加到列表中。一旦他們中止循環(huán),則用for循環(huán)輸出列表中的所有元素。


        今天講解的知識(shí)點(diǎn)很重要,通過(guò)上述講解的內(nèi)容我們才能了解如何使用列表,是否它可以是條件語(yǔ)句或循環(huán)。列表可以結(jié)合很多方法使用; 在本書(shū)的其余部分中,我們將更詳細(xì)的介紹它們。


        瀏覽 50
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            免费在线观看AV片 | www日逼com | 久久综合久色欧美综合狠狠 | 久久久国产露脸精品 | 两根一进一出啊灌满了视频 | 久久国产一 片免费观看 | 抽插日韩 | 亚洲区小说区图片区qvod | 大屁股喷水视频在线观看 | 公交车被脱了内裤进入动漫 |