0

いくつかのことを練習します: ラムダ関数と文字列操作。何もインポートせずにこれを行う最も効率的な方法を見つけたいです。

単語をアルファベット順に並べ替える短いスクリプトを次に示します。

def alphabeticalOrder(word):
    lst = [l for l in word]
    return sorted(lst)


def main ():
    word = raw_input('enter word: ')
    print "".join(alphabeticalOrder(word))


if __name__ == '__main__':
    main()

そして、私は文中のすべての単語に対してこれを行いたかった:

def alphabeticalOrder(line):
    lst = []
    for word in line.split(" "):
        lst.append(sorted(list(word)))
    print lst     # trouble here

def main ():
        line = raw_input('enter sentence: ')
        print alphabeticalOrder(line)

if __name__ == '__main__':
    main()

私の質問は次のとおりです。ネストされたリストを反復処理するラムダ関数を記述して、lst各項目をアルファベット順に並べ替えられた単語の文字列として出力できますか?

4

3 に答える 3

2

あなたはこれを求めている:

' '.join([''.join(sorted(word)) for word in sentence.split(' ')])
于 2013-04-13T18:00:23.737 に答える
1

文に対して機能する最初のアプローチの改良版:

def alphabeticalOrder(word):
    return "".join(sorted(lst)) #return the sorted string


def main ():
    sent = raw_input('enter sentence: ')
    print " ".join(map(alphabeticalOrder,sent.split())) #map alphabeticalOrder to each
                                                        #word in the sentence


if __name__ == '__main__':
    main()

出力:

enter sentence: foo bar spam eggs
foo abr amps eggs
于 2013-04-13T18:07:41.993 に答える