你知道如何將python中巢狀的列表扁平化嗎?

2022-07-03 22:42:20 字數 1000 閱讀 1234

將python中巢狀的列表扁平化,指的就是:

lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]]

# 類似於上面的列表,我們要得到下面的結果

[1, 3, 3, 5, 6, 8, "aaa", 250]

那麼我們要如何做呢?

關於如何把乙個巢狀的列表扁平化,我們需要使用yield和yield from。這兩位老鐵的底層實現原理我不想深究,因為牽扯的東西太多了,況且針對目前的問題我們也用不到,這裡我們簡單的說一下。

def foo():

yield [1, 2, 3]

def bar():

yield from [1, 2, 3]

print(foo().__next__()) # [1, 2, 3]

print(bar().__next__()) # 1

"""我們看到關於yield,它是把yield後面的整個元素都迭代出來

但是對於yield from,它的後面必須跟著乙個可迭代的物件,然後依次迭代這個可迭代物件裡面的每乙個元素

"""

因此,我們就找到了方法。

def flat(l: list):

for _ in l:

if isinstance(_, list):

yield from flat(_)

else:

yield _

lst = [1, [[[[3, 3], 5]]], [[[[[[[[[[[[[6]]]]], 8]]], "aaa"]]]], 250]]

print([_ for _ in flat(lst)]) # [1, 3, 3, 5, 6, 8, 'aaa', 250]

centos 中如何將python更新到最新的版本

cd downloads wget 在編譯前先建立乙個安裝目錄的資料夾 mkdir usr local python2.7.10 解壓 tar zxvf python 2.7.10.tgz 進入解壓縮後的資料夾 cd python 2.7.10 在解壓縮後的目錄下編譯 configure prefi...

Python 如何將pip list中的庫匯入匯出

檢視當前安裝的包 pip list 匯出當前安裝的包記錄 pip freeze requirements.txt 用anaconda建立乙個虛擬環境 conda create n py37 python 3.7 啟用當前py37環境 mac linux source activate py37 wi...

python列表壓縮 如何將python列表壓縮

zip 函式可以把兩個列表 壓縮 成乙個 zip 物件 可迭代物件 這樣就可以使用乙個迴圈並行遍歷兩個列表。為了測試 zip 函式的功能,我們可以先在互動式直譯器中 試驗 一下該函式的功能。a a b c b 1,2,3 x for x in zip a,b a 1 b 2 c 3 從上面的測試結果...