欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)嵌套列表的7中方法總結(jié)

 更新時間:2023年03月03日 14:07:07   作者:Python數(shù)據(jù)挖掘  
這篇文章主要來給大家講解一個Python的進階知識點:如何將一個嵌套的大列表展開形成一個列表。小編提供了7種方法供大家學(xué)習(xí)參考,希望大家能喜歡

大家好,今天給大家講解一個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)工具欄和工具欄管理器三種模式的差異

    這篇文章主要介紹了pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • python 使用MyQR和qrcode來制作二維碼

    python 使用MyQR和qrcode來制作二維碼

    這篇文章主要介紹了python 如何使用MyQR和qrcode來制作二維碼,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-05-05
  • Python讀寫Redis數(shù)據(jù)庫操作示例

    Python讀寫Redis數(shù)據(jù)庫操作示例

    Redis是一個開源的非關(guān)系型數(shù)據(jù)庫,它采用C語言編寫,是一個key-value存儲系統(tǒng),它存儲的value類型很多,包括string(字符串),list(鏈表),set(集合),zset(有序集合),hash(哈希)
    2014-03-03
  • python框架flask入門之路由及簡單實現(xiàn)方法

    python框架flask入門之路由及簡單實現(xiàn)方法

    這篇文章主要介紹了python框架flask入門路由及路由簡單實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Python爬取讀者并制作成PDF

    Python爬取讀者并制作成PDF

    本文是在學(xué)習(xí)了beautifulsoup之后,制作的一個爬取讀者雜志并使用reportlab制作成pdf的python小工具,咱也文藝一下:),分享給大家,有需要的小伙伴參考下吧。
    2015-03-03
  • Python數(shù)組與列表的區(qū)別解析

    Python數(shù)組與列表的區(qū)別解析

    列表因為其存儲的類型可以是任何對象,因此列表的用處更廣泛,更多樣化,并且列表可以有更多的存儲空間去使用,而數(shù)組使用的空間就相對較少,這篇文章主要介紹了Python數(shù)組與列表的區(qū)別,需要的朋友可以參考下
    2023-11-11
  • 使用Python處理大文件的讀取的方法小結(jié)

    使用Python處理大文件的讀取的方法小結(jié)

    在日常的開發(fā)工作中,我們經(jīng)常會遇到處理大文件的需求,無論是讀取日志文件、處理數(shù)據(jù)集,還是分析超大文本文件,大文件操作都是一個非常常見的挑戰(zhàn),本文將詳細(xì)介紹如何使用 Python 處理大文件的讀取,介紹幾種常用的技術(shù),需要的朋友可以參考下
    2024-11-11
  • opencv python在視屏上截圖功能的實現(xiàn)

    opencv python在視屏上截圖功能的實現(xiàn)

    OpenCV是一個基于BSD許可(開源)發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。這篇文章主要介紹了opencv python在視屏上截圖,需要的朋友可以參考下
    2020-03-03
  • python全局解釋器GIL鎖機制詳解

    python全局解釋器GIL鎖機制詳解

    我們要知道一點GIL并不是Python的特性,它是Python解釋器Cpython引入的一個概念,下面這篇文章主要給大家介紹了關(guān)于python全局解釋器GIL鎖機制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 詳細(xì)介紹Ruby中的正則表達(dá)式

    詳細(xì)介紹Ruby中的正則表達(dá)式

    這篇文章主要介紹了詳細(xì)介紹Ruby中的正則表達(dá)式,文章中還給出了用于搜索和替換的正則表達(dá)式的使用實例,需要的朋友可以參考下
    2015-04-04

最新評論