2

誰かが私が2つのことをするのを手伝ってくれませんか:

  1. コードを見直して、より良い方法で記述できるかどうかを確認してください。
  2. このプログラムを終了します。リストを元に戻そうとするのに行き詰まりました。つまり、ネストされたリストのリストです。

どうぞ:

t = ['a', 'b', ['c', 'd'], ['e'], 'f']

def capitalize_list(t):
    L = []
    N = []
    for i in range(len(t)):
        if type(t[i]) == str:
            L.append(t[i].capitalize())
        if type(t[i]) == list:
            L.extend(t[i])
            for s in L:
                N.append(s.capitalize())
     print N 

 capitalize_list(t)

このコードは次を出力します。

['A', 'B', 'C', 'D', 'E', 'F']

印刷する必要があります:

['A', 'B', ['C', 'D'], ['E'], 'F']
4

2 に答える 2

1

これを再帰的に行う別の方法:

def capitalize(item):
    if type(item) is str:
        return item.capitalize()
    if type(item) is list:
        return map(capitalize, item)

あなたもできる

def capitalize(item):
    try:
        return item.capitalize()
    except AttributeError:
        return map(capitalize, item)

-- これは、capitalize メソッドを含むオブジェクト (通常の文字列や Unicode 文字列など) に対してこれを使用し、それを含まないオブジェクトを反復処理しようとします。

于 2013-08-26T02:47:00.693 に答える