0
  1. 次のコード行を作成します。このコードは、ファイルから単語のペアを読み取り、それらを分割して、タプルを返します。各タプルの最初のインデックスは、最初の単語または2番目の単語のいずれかです。たとえば、aBob, Smithはそれぞれとに変換され[(Bob, Smith)]ます[(Smith, Bob)]。これをのすべてのペアにマップしg.readlines()ます。

    マップで使用できるより一般的なword_flip()関数に、 2番目のパラメーターを渡すことが可能かどうか疑問に思っていましたか?flip = True

    first_word_is_first = map(first_second_split, g.readlines())
    
    first_word_is_second = map(second_first_split, g.readlines())
    
  2. より機能的なアプローチに関するランダムな質問、文字列が与えられ、各単語の属性に基づいてその文字列を分割したい場合(つまり)、反復して分割するAlex Smith AGE 35 420以外に、このような問題にアプローチするより機能的な方法がありますstring.split()str変数への行、、、nameまたはage正規room_number表現を使用していますか?マップ、フィルター、またはitertoolsを使用することは可能ですか?できればストリングを1回通過します。

4

2 に答える 2

1
  1. はい。で使用する場合は、functools.partialを使用して関数に引数を追加できますmap()

    from functools import partial
    first_word_is_first = map(partial(word_flip, flip=False), g.readlines())
    first_word_is_second = map(partial(word_flip, flip=True), g.readlines())
    

    ただし、リスト内包表記を使用する方が簡単です。

    first_word_is_first = [word_flip(l, flip=False) for l in g.readlines()]
    first_word_is_second = [word_flip(l, flip=True) for l in g.readlines()]
    
  2. 文字列の構造(フィールド間とフィールド内の両方のスペース)では、フィールドを分割するために正規表現や専用関数などのメソッドを使用する必要があります。

于 2012-08-13T09:11:34.493 に答える
0

2の場合:

name, surname, n, age, room = 'Alex Smith AGE 35 420'.split()

メソッド呼び出しから複数の結果を返します。

于 2012-08-13T09:11:35.333 に答える