• 締切済み

pythonコードについて

以下のpythonコードに関して質問があります。なぜ一度Falseになったatsplitがforループ内で再びTrueになるのでしょうか?以下にコードと結果を掲載しております。 def split_string(source,splitlist): output = [] atsplit = True for char in source:    if char in splitlist:      atsplit = True      print atsplit    else:       if atsplit:          output.append(char)          atsplit = False          print atsplit       else:          output[-1] = char return output out = split_string("This is a test-of the,string separation-code!"," ,!-") print out #>>> ['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code'] False True False True False True False True False True False True False True False True False True ['This', 'is', 'a', 'test', 'of', 'the', 'string', 'separation', 'code']tsplit = True

専門家の回答 ( 1 )

回答No.1

for char in source: sourceの先頭から一文字づつ取り出してcharに代入し、末尾までループします。 if char in splitlist: 取り出した文字列がsplitlistに含まれているかによって分岐します。 splitlistに含まれている場合 atsplit をTrueにします atsplitを出力します(True表示) splitlistに含まれていない場合 atsplitがTrueならoutputに新しい要素を追加し、atsplitをFalseにしてatsplitを出力します(False表示) atsplitがFalseならoutputの末尾にcharを追加します なので、splitlistに含まれている文字が見つかるたびにatsplitはTrueになります。 この説明でわかるでしょうか? ポイントはfor文でループするたびにcharが次の文字に変わるというところです。

川島 俊之(@shuminm1628s) プロフィール

【自己紹介】 久が原教室インストラクターの川島です。私はパソコンは自動車のようなものだと思っています。免許をとって運転ができるようになると、自分の世界が広がりますよね。パソコンやインターネットも同じよ...

もっと見る

関連するQ&A