Python で任意にネストされたリストを効率的にフラット化するにはどうすればよいでしょうか?
任意にネストされたリストの平坦化
深さのレベルが異なるネストされたリストは、単一の次元に縮小する際に課題が生じます。浅いリストを平坦化する解決策は数多くありますが、その多くは [[[1, 2, 3], [4, 5]], 6] などの不規則にネストされたリストに苦労しています。
再帰アプローチ
質問で述べたように、アプローチの 1 つは次のとおりです。 recursion:
def flatten(x): result = [] for el in x: if hasattr(el, "__iter__") and not isinstance(el, basestring): result.extend(flatten(el)) else: result.append(el) return result
このアルゴリズムはリストを反復処理し、ネストされたリストを再帰的に平坦化し、反復不可能な要素を結果に追加します。
読みやすさとパフォーマンスを向上させるジェネレーター関数
ジェネレーター関数は、可読性と可読性を向上させる代替アプローチを提供します。
Python 2
from collections import Iterable def flatten(xs): for x in xs: if isinstance(x, Iterable) and not isinstance(x, basestring): for item in flatten(x): yield item else: yield x
Python 3
from collections.abc import Iterable def flatten(xs): for x in xs: if isinstance(x, Iterable) and not isinstance(x, (str, bytes)): yield from flatten(x) else: yield x
Python 3 、yield from 演算子は、ネストされたジェネレーターから項目を順番に返すのが便利ですが、Python 2 では、サブジェネレーターを明示的に繰り返します。
以上がPython で任意にネストされたリストを効率的にフラット化するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

Pythonasyncioについて...

Investing.comの反クラウリング戦略を理解する多くの人々は、Investing.com(https://cn.investing.com/news/latest-news)からのニュースデータをクロールしようとします。

Python 3.6のピクルスファイルの読み込みエラー:modulenotfounderror:nomodulenamed ...

SCAPYクローラーを使用するときにパイプラインファイルを作成できない理由についての議論は、SCAPYクローラーを学習して永続的なデータストレージに使用するときに、パイプラインファイルに遭遇する可能性があります...
