0

私を手伝ってくれますか?

与えられた子音と母音の文字列「CVCCVCCVCC」の音節境界を評価するアルゴリズムを設計しようとしています。これらの文字列は、長さが数十万または数百万の項目に及ぶ可能性のあるリストに格納されます。しかし、リストの取り扱いを正しく理解していなかったようで、それが原因でこの問題が発生しています。コードを作成した後、モジュールを [実行] をクリックすると、Python シェルが再起動し、構文エラーは発生しません。ただし、コードをテストすると、空のリストが返されます。コードはこちらです。私のアルゴリズムの何が問題なのか教えてください。本当にがっかりしています。

親切な助けを前もってありがとう!

def assing_boundaries(L):

    """ (List of str -> List of str)

    Assings the syllable boundaries for a given string of Syllable      Templates, with the output meeting the two conditions given below:
Condition1: item[2:] != 'CC'
Condition2: item[:-2] !='C.C'

    >>> assing_boundaries(['CVCCVCC', 'CVCCV:C'])
    ['CVC.CVCC', 'CVC.CV:C']   
    """


    boundary = []
    i = 0

    for item in L:
        for char in item:
            for i in range(len(item) - 1):
                if item[i] == 'CC':
                    char = 'C.C'
                    i = i + 1
                    boundary = boundary.append(item)


    return boundary
4

1 に答える 1

0
  1. あなたのループは間違っています。をテストif item[i] == 'CC'しますがitem[i]、単一の文字にすることはできません。
  2. boundary = boundary.append(item).append返品するので間違っていますNone。するだけですboundary.append(item)

return [item.replace('CC', 'C.C') for item in L]もっと簡単に、代わりにやらないのはなぜですか?リスト内包表記を微調整して、必要に応じてリストをフィルタリングできます。

于 2013-03-31T02:57:16.727 に答える