0

ネストリスト内のアイテムの数を数える方法を見つけようとしています。私はこれを開始する方法で立ち往生しています。たとえば、 NestLst([]) を実行すると 0 が出力されますが、実行すると

NestLst([[2, [[9]], [1]], [[[[5]]], ['hat', 'bat'], [3.44], ['hat', ['bat']]]]

9 を返します。これを開始する方法またはこれを行う方法についてのヘルプは素晴らしいでしょう。

ありがとう!

4

4 に答える 4

1
def total_length(l):
    if isinstance(l, list):
        return sum(total_length(x) for x in l)
    else:
        return 1
于 2013-06-04T10:14:55.483 に答える
1
import collections
def NestLst(seq):
    if isinstance(seq, str) or not isinstance(seq, collections.Iterable):
        return 1
    return sum(NestLst(x) for x in seq)

>>> NestLst([[2, [[9]], [1]], [[[[5]]], ['hat', 'bat'], [3.44], ['hat', ['bat']]]])
9
于 2013-06-04T10:13:47.283 に答える
0

あなたの質問にはキーワードが含まれています: recursively。リストを反復処理する関数を作成し、リスト以外の項目が見つかった場合はカウントに 1 を追加し、リストが見つかった場合はそれ自体を再帰的に呼び出します。

コードの問題は再帰呼び出しの代わりに長さを使用していることです。

これはpythonicの擬似コードです:

def count(list):
    answer = 0
    for item in list:
        if item is not a list:
            answer += 1
        else:
            answer += number of items in the sublist (recursion will be useful here)
于 2013-06-04T10:12:15.357 に答える