最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 如何展開嵌套的序列

 更新時間:2020年08月01日 10:17:10   作者:David Beazley  
這篇文章主要介紹了Python 如何展開嵌套的序列,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下

問題

你想將一個多層嵌套的序列展開成一個單層列表

解決方案

可以寫一個包含 yield from 語句的遞歸生成器來輕松解決這個問題。比如:

from collections import Iterable

def flatten(items, ignore_types=(str, bytes)):
  for x in items:
    if isinstance(x, Iterable) and not isinstance(x, ignore_types):
      yield from flatten(x)
    else:
      yield x

items = [1, 2, [3, 4, [5, 6], 7], 8]
# Produces 1 2 3 4 5 6 7 8
for x in flatten(items):
  print(x)

在上面代碼中, isinstance(x, Iterable) 檢查某個元素是否是可迭代的。 如果是的話, yield from 就會返回所有子例程的值。最終返回結果就是一個沒有嵌套的簡單序列了。

額外的參數(shù) ignore_types 和檢測語句 isinstance(x, ignore_types) 用來將字符串和字節(jié)排除在可迭代對象外,防止將它們再展開成單個的字符。 這樣的話字符串數(shù)組就能最終返回我們所期望的結果了。比如:

>>> items = ['Dave', 'Paula', ['Thomas', 'Lewis']]
>>> for x in flatten(items):
...   print(x)
...
Dave
Paula
Thomas
Lewis
>>>

討論

語句 yield from 在你想在生成器中調用其他生成器作為子例程的時候非常有用。 如果你不使用它的話,那么就必須寫額外的 for 循環(huán)了。比如:

def flatten(items, ignore_types=(str, bytes)):
  for x in items:
    if isinstance(x, Iterable) and not isinstance(x, ignore_types):
      for i in flatten(x):
        yield i
    else:
      yield x

盡管只改了一點點,但是 yield from 語句看上去感覺更好,并且也使得代碼更簡潔清爽。

之前提到的對于字符串和字節(jié)的額外檢查是為了防止將它們再展開成單個字符。 如果還有其他你不想展開的類型,修改參數(shù) ignore_types 即可。

最后要注意的一點是, yield from 在涉及到基于協(xié)程和生成器的并發(fā)編程中扮演著更加重要的角色。

以上就是Python 如何展開嵌套的序列的詳細內容,更多關于Python 展開嵌套的序列的資料請關注腳本之家其它相關文章!

相關文章

  • Python聚類算法之DBSACN實例分析

    Python聚類算法之DBSACN實例分析

    這篇文章主要介紹了Python聚類算法之DBSACN,結合實例形式詳細分析了DBSACN算法的原理與具體實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實例

    Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實例

    這篇文章主要介紹了Python3 操作 MySQL 插入一條數(shù)據(jù)并返回主鍵 id的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Jupyter?Notebook的使用詳解

    Jupyter?Notebook的使用詳解

    JupyterNotebook是一個強大的工具,可以用于數(shù)據(jù)科學和機器學習等領域的各種任務,該文章介紹了JupyterNotebook的基本使用方法,包括新建和保存Notebook,插入圖像,運行代碼,以及許多快捷鍵的使用
    2025-01-01
  • 淺析python標準庫中的glob

    淺析python標準庫中的glob

    glob 文件名模式匹配,不用遍歷整個目錄判斷每個文件是不是符合。這篇文章主要介紹了python標準庫中的glob的相關知識,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2020-03-03
  • python3.4中清屏的處理方法

    python3.4中清屏的處理方法

    在本篇文章里小編給大家分享的是關于python3.4中清屏的處理方法,有興趣的朋友們可以跟著學習下。
    2020-07-07
  • Python實現(xiàn)文件操作幫助類的示例代碼

    Python實現(xiàn)文件操作幫助類的示例代碼

    在使用Python進行業(yè)務開發(fā)的時候,需要將一些數(shù)據(jù)保存到本地文件存儲,方便后面進行數(shù)據(jù)分析展示,本文就來用Python制作一個文件操作幫助類,需要的可以參考一下
    2023-03-03
  • python幾種常用功能實現(xiàn)代碼實例

    python幾種常用功能實現(xiàn)代碼實例

    這篇文章主要介紹了python幾種常用功能實現(xiàn)代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 教你如何使用Python下載B站視頻的詳細教程

    教你如何使用Python下載B站視頻的詳細教程

    這篇文章主要介紹了教你如何使用Python下載B站視頻的詳細教程,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 用Python將一個列表分割成小列表的實例講解

    用Python將一個列表分割成小列表的實例講解

    今天小編就為大家分享一篇用Python將一個列表分割成小列表的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • Anaconda中Python虛擬環(huán)境的創(chuàng)建使用與刪除方法詳解

    Anaconda中Python虛擬環(huán)境的創(chuàng)建使用與刪除方法詳解

    這篇文章主要為大家介紹了在Anaconda環(huán)境下,創(chuàng)建、使用與刪除Python虛擬環(huán)境的方法,具有一定的借鑒價值,需要的小伙伴可以跟隨小編一起了解一下
    2023-08-08

最新評論

谷城县| 靖远县| 阿克苏市| 吉隆县| 营山县| 日喀则市| 正镶白旗| 牟定县| 阜阳市| 崇信县| 正阳县| 香河县| 琼海市| 浦东新区| 福泉市| 仪征市| 三台县| 辉南县| 敦煌市| 唐海县| 萨迦县| 长宁县| 扎赉特旗| 罗定市| 门头沟区| 宜宾县| 梁平县| 沙坪坝区| 前郭尔| 承德县| 平武县| 信阳市| 陆河县| 郑州市| 博兴县| 嘉荫县| 罗城| 凤冈县| 石门县| 福州市| 双柏县|