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)文章
pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異
這篇文章主要介紹了pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02python框架flask入門之路由及簡單實現(xiàn)方法
這篇文章主要介紹了python框架flask入門路由及路由簡單實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06opencv python在視屏上截圖功能的實現(xiàn)
OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。這篇文章主要介紹了opencv python在視屏上截圖,需要的朋友可以參考下2020-03-03