- 締切済み
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 )
- 専門家川島 俊之(@shuminm1628s) IT・パソコン教室講師
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) プロフィール
【自己紹介】 久が原教室インストラクターの川島です。私はパソコンは自動車のようなものだと思っています。免許をとって運転ができるようになると、自分の世界が広がりますよね。パソコンやインターネットも同じよ...
もっと見る