スライスの基本的な話なんだけど、意外と知らない人が多いと思うので。
スライスで1つおきに取り出すには、こうする。
>>> "hogehoge~"[::2] 'hghg~'
スライスで指定できるのはstart, stop, stepであり、上のように指定するとstart, stopはNoneでstepが2になる。
参考:【python】sliceのちょっと深イイ(かもしれない)話 - 静かなる名辞
ではstepを1にすると? これは元の文字列が返る。
>>> "hogehoge~"[::1] 'hogehoge~'
たまにこれをreverseに悪用(?)する人がいる。[::-1]と指定するとそういう挙動になるので。
>>> "hogehoge~"[::-1] '~egohegoh'
でもこれは可読性が悪い、というか完全に初見殺しなので、やめた方が良いと思う。reversedというものがあるので、そっちを使おう。
・・・と思って書いてみたけど、腹立たしいことに空気を読まない子(iteratorで返してくれるアレ)なので、こんな真似をする必要がある。
>>> "".join(reversed("hogehoge~")) '~egohegoh'
どっちがマシかなぁ・・・。
話をもとに戻して、[::-1]でこうなるということは、これもできる。1つおきに取り出して逆転させる。
>>> "hogehoge~"[::-2] '~ghgh'
便利、なのだろうか(どんなときに?)。