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

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

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

大家好,今天給大家講解一個(gè)Python的進(jìn)階知識(shí)點(diǎn):如何將一個(gè)嵌套的大列表展開(kāi)形成一個(gè)列表。

小編提供了7種方法供大家學(xué)習(xí)參考:

  • for循環(huán)
  • 列表推導(dǎo)式
  • 使用第三方庫(kù)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個(gè)特點(diǎn):

  • 嵌套列表只有兩層
  • 里面的元素也全部是列表類型

方式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庫(kù)

借助第三方的庫(kù)itertools:

import itertools  
  
# 通過(guò)chain方法從可迭代對(duì)象中生成;最后展開(kāi)成列表  
  
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  # 實(shí)現(xiàn)自加  
      
sum_data  

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  

方式6:extend函數(shù)

如何快速理解python的extend函數(shù),給個(gè)案例

# 如何理解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)   # 對(duì)空列表逐步追加  
      
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是可迭代的對(duì)象(列表等),調(diào)用函數(shù)本身;直到執(zhí)行else語(yǔ)句  
            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ù)有特殊點(diǎn):嵌套只有兩層,且里面的元素全部是列表;后面會(huì)考慮非全部列表的數(shù)據(jù)(比如列表和數(shù)字組合的嵌套列表等)和多層嵌套。

到此這篇關(guān)于Python實(shí)現(xiàn)嵌套列表的7中方法總結(jié)的文章就介紹到這了,更多相關(guān)Python嵌套列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異

    pytho matplotlib工具欄源碼探析一之禁用工具欄、默認(rèn)工具欄和工具欄管理器三種模式的差異

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

    python 使用MyQR和qrcode來(lái)制作二維碼

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

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

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

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

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

    Python爬取讀者并制作成PDF

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

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

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

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

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

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

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

    python全局解釋器GIL鎖機(jī)制詳解

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

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

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

最新評(píng)論