Python實現(xiàn)嵌套列表的7中方法總結(jié)
大家好,今天給大家講解一個Python的進階知識點:如何將一個嵌套的大列表展開形成一個列表。
小編提供了7種方法供大家學(xué)習(xí)參考:
- for循環(huán)
- 列表推導(dǎo)式
- 使用第三方庫itertools
- 使用sum函數(shù)
- python自加(+=)
- 使用extend函數(shù)
- 使用遞歸函數(shù)
模擬數(shù)據(jù)
data = [[1,2,3],[4],[5,6,7],[8,9],[10]] # 模擬數(shù)據(jù) data
[[1, 2, 3], [4], [5, 6, 7], [8, 9], [10]]
這份模擬的數(shù)據(jù)有2個特點:
- 嵌套列表只有兩層
- 里面的元素也全部是列表類型
方式1:for循環(huán)
最容易想到的方式就是for循環(huán):
for i in data:
print(type(i))
<class 'list'> <class 'list'> <class 'list'> <class 'list'> <class 'list'>
# 導(dǎo)入Iterable 模塊
from collections import Iterable
sum_data = []
for i in data:
if isinstance(i,Iterable): # 如果可迭代(比如列表形式)
for j in i: # 再次循環(huán)追加元素
sum_data.append(j)
else:
sum_data.append(i) # 否則直接追加
sum_data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式2:列表推導(dǎo)式
for循環(huán)能夠?qū)崿F(xiàn),那么列表推導(dǎo)式肯定也可以:
sum_data = [i for j in data if isinstance(j,Iterable) for i in j] # 循環(huán)一定是從大到小 sum_data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式3:使用itertools庫
借助第三方的庫itertools:
import itertools # 通過chain方法從可迭代對象中生成;最后展開成列表 sum_data = list(itertools.chain.from_iterable(data)) sum_data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式4:使用sum函數(shù)
sum_data = sum(data, []) sum_data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式5:Python自加
sum_data = []
for i in data:
sum_data += i # 實現(xiàn)自加
sum_data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式6:extend函數(shù)
如何快速理解python的extend函數(shù),給個案例
# 如何理解python的extend函數(shù) list1 = [1,2,3,4] list1.extend([5,6]) # 追加功能extend;就地修改 list1 # list1已經(jīng)發(fā)生了變化
[1, 2, 3, 4, 5, 6]
sum_data = []
for i in data:
sum_data.extend(i) # 對空列表逐步追加
sum_data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式7:使用遞歸函數(shù)
data
[[1, 2, 3], [4], [5, 6, 7], [8, 9], [10]]
def flatten(data): # 定義遞歸函數(shù)
sum_data = []
for i in data:
if isinstance(i, Iterable): # 如果i是可迭代的對象(列表等),調(diào)用函數(shù)本身;直到執(zhí)行else語句
sum_data.extend(flatten(i))
else:
sum_data.append(i)
return sum_data
sum_data = flatten(data) # 調(diào)用遞歸函數(shù) sum_data
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
后續(xù)
本文的數(shù)據(jù)有特殊點:嵌套只有兩層,且里面的元素全部是列表;后面會考慮非全部列表的數(shù)據(jù)(比如列表和數(shù)字組合的嵌套列表等)和多層嵌套。
到此這篇關(guān)于Python實現(xiàn)嵌套列表的7中方法總結(jié)的文章就介紹到這了,更多相關(guān)Python嵌套列表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決Pycharm 包已經(jīng)下載,但是運行代碼提示找不到模塊的問題
今天小編就為大家分享一篇解決Pycharm 包已經(jīng)下載,但是運行代碼提示找不到模塊的問題。具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08
python應(yīng)用程序在windows下不出現(xiàn)cmd窗口的辦法
這篇文章主要介紹了python應(yīng)用程序在windows下不出現(xiàn)cmd窗口的辦法,適用于python寫的GTK程序并用py2exe編譯的情況下,需要的朋友可以參考下2014-05-05
Pandas數(shù)據(jù)清洗函數(shù)總結(jié)
本文主要介紹了Pandas數(shù)據(jù)清洗函數(shù)總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
Python處理字節(jié)串:struct.pack和struct.unpack使用
這篇文章主要介紹了Python處理字節(jié)串:struct.pack和struct.unpack使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01

