1

重複の可能性:
Python でのリストのフラット化 (不規則な) リスト

ネストされたリスト内のすべてのアイテムをリスト/印刷するソリューションが必要でした(任意のネストレベルで)。これが私が思いついたものです:

items = []
def getitems(mylist):
    for item in mylist:
        if type(item) is list:
            getitems(item)
        else:
            items.append(item)
    return items

出力例:

foo=['foo','bar',['foo','bar','baz'],'spam',['ham','eggs','salami']]

In [8]: getitems(foo)
Out[8]: 
['foo',
 'bar',
 'foo',
 'bar',
 'foo',
 'bar',
 'baz',
 'spam',
 'ham',
 'eggs',
 'salami']

これは良い解決策ですか?または、より良いアプローチがありますか?

4

1 に答える 1

0

これは少し冗長かもしれませんが、アキュムレータ リストをオプションの引数として渡すことができます。このようにして、グローバル変数が一巡することはなく、関数を 2 回呼び出して最初の呼び出しの後にそれをクリアするのを忘れた場合に発生する可能性のある問題を回避できます。

def getitems(mylist, acc = None):
    if acc is None: acc = []
    for item in mylist:
        if type(item) is list:
            getitems(item, acc)
        else:
            acc.append(item)
    return acc
于 2012-08-09T11:39:54.380 に答える