成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

Python復(fù)合列表的遍歷方法

在這篇文章中,我們將學(xué)習(xí)如何遍歷 Python 中復(fù)合列表。Python 中的列表非常靈活,通過(guò)將新列表充當(dāng)元素保存到列表中的方式,可以任意組合出及其復(fù)雜的樹(shù)形結(jié)構(gòu)。 編寫(xiě)代碼首先,我們需要啟動(dòng)已安裝

在這篇文章中,我們將學(xué)習(xí)如何遍歷 Python 中復(fù)合列表。Python 中的列表非常靈活,通過(guò)將新列表充當(dāng)元素保存到列表中的方式,可以任意組合出及其復(fù)雜的樹(shù)形結(jié)構(gòu)。

編寫(xiě)代碼

首先,我們需要啟動(dòng)已安裝的 Python IDLE 程序,然后點(diǎn)擊菜單欄上的 “File > New File” 新建一個(gè) Python 源代碼文件(由 Python 內(nèi)置的文本編輯器打開(kāi))。

在新打開(kāi)的代碼編輯窗口中,編寫(xiě)一段遍歷輸出一維列表中所有元素的代碼。為了指明輸出的內(nèi)容是什么,可以在輸出列表元素之前寫(xiě)上一條打印語(yǔ)句。

我們可以通過(guò)內(nèi)置函數(shù) `print()` 輸出復(fù)合列表的值,并盡可能多套幾層,增加遍歷的難度。

執(zhí)行代碼

代碼編寫(xiě)完畢后,點(diǎn)擊菜單欄上的 “File > Save”(或者 Ctrl S)保存新建的源代碼文件(記得取一個(gè)有意義的名字并存放在容易找到的位置)。

保存完代碼之后,可以通過(guò)菜單欄上的 “Run > Check Module”(或者 ALT X)執(zhí)行代碼檢查,如果代碼有語(yǔ)法錯(cuò)誤,它會(huì)彈出錯(cuò)誤提示,并用紅色標(biāo)記出源代碼中的出錯(cuò)位置。如果沒(méi)有問(wèn)題,則什么也不會(huì)發(fā)生。

執(zhí)行代碼語(yǔ)法檢查后,點(diǎn)擊菜單欄上的 “Run > Run Module”(或 F5),運(yùn)行編輯器中的 Python 代碼。執(zhí)行完畢后,可以在 Python Shell 中見(jiàn)到輸出的內(nèi)容。

遍歷復(fù)合列表

我們可以寫(xiě)一個(gè)遍歷復(fù)合列表的 循環(huán),將其中的所有元素輸出。寫(xiě)完代碼后執(zhí)行。查看 Shell 中的輸出,發(fā)現(xiàn)其中仍然有子列表的元素沒(méi)有遍歷到。

為了遍歷列表中的列表元素,可以通過(guò)內(nèi)置函數(shù) `isinstance()` 判斷列表中的元素是否是一個(gè)列表。如果是,則繼續(xù)用 `` 循環(huán)遍歷其中的元素。不是,則直接輸出。修改遍歷復(fù)合列表的代碼,增加遍歷列表元素的代碼。寫(xiě)完代碼后,按 F5 運(yùn)行代碼。查看 Shell 中的輸出內(nèi)容,發(fā)現(xiàn)第 1 級(jí)列表中的子列表元素已經(jīng)可以正常輸出了。

為了遍歷更多層的子列表元素,繼續(xù)向代碼中添加更多的 `if` 和 `` 語(yǔ)句。寫(xiě)好代碼后,繼續(xù)按 F5 運(yùn)行。查看 Shell 中的輸入,發(fā)現(xiàn)總共寫(xiě)了 3 層 `` 循環(huán)后,已經(jīng)可以遍歷復(fù)合列表中的所有元素了??墒?,如果列表層次再多一些,難道要繼續(xù)寫(xiě)內(nèi)層的處理循環(huán)嗎?

遞歸實(shí)現(xiàn)

仔細(xì)觀察 `if` 和 `` 嵌套的代碼,發(fā)現(xiàn)它符合某種模式。這種模式似乎可以用遞歸來(lái)實(shí)現(xiàn)。而且遞歸可以支持無(wú)限層次的列表嵌套。根據(jù)之前的復(fù)合列表遍歷代碼,定義一個(gè)打印列表元素的 `printList()` 函數(shù),然后調(diào)用該函數(shù)打印復(fù)合列表中的元素。

為了讓打印的列表看上去更加直觀,可以根據(jù)列表的級(jí)別,添加指定數(shù)量的 ‘-’ 字符。根據(jù)這一想法,可以實(shí)現(xiàn)一個(gè)改進(jìn)版的 `printList2()` 函數(shù)。然后執(zhí)行 F5 測(cè)試一下。OK,輸出很正常。

測(cè)試函數(shù)

我們可以再寫(xiě)個(gè)測(cè)試函數(shù)測(cè)試一下。

```python

def test():

composite [1, [2, [3, 4], 5], [6, 7], 8]

printList(composite)

```

增加自定義間隔

為了讓用戶(hù)能夠自定義間隔增長(zhǎng)的參數(shù),我們可以再次改進(jìn)代碼,實(shí)現(xiàn) `printList3()` 函數(shù)。

```python

def printList3(lst, level0, interval4):

'''自定義間隔增長(zhǎng)的復(fù)合列表打印函數(shù)'''

for i in lst:

if isinstance(i, list):

printList3(i, level interval, interval)

else:

print('-' * level, i)

```

然后運(yùn)行測(cè)試一下,傳入不同的參數(shù)并運(yùn)行代碼。OK,一切正常!

結(jié)論

通過(guò)本文的學(xué)習(xí),我們了解了 Python 復(fù)合列表的遍歷方法。我們可以通過(guò) `` 循環(huán)和遞歸來(lái)遍歷列表中的所有元素,并且可以通過(guò)自定義函數(shù)的參數(shù)來(lái)控制輸出格式。

標(biāo)簽: