プログラミングコンテストでは、文字列を対象に様々な操作を行う必要がある場合があります。

ここでは、ある文字列を任意の間隔でスライスする方法を、python3 で紹介します。


早速ですが、以下のコードをご覧ください。

S = 'abcdefghijjklmnopqrstuvwxyz'

for i in range(1, len(S)):
    print(S[0:len(S):i])
    # i=1 abcdefghijjklmnopqrstuvwxyz
    # i=2 acegijlnprtvxz
    # i=3 adgjlorux
    # i=4 aeilptx
    # i=5 afjoty
    # i=6 aglrx
    # i=7 ahnu
    # i=8 aipx
    # i=9 ajr
    # i=10 ajt
    # i=11 akv
    # i=12 alx
    # i=13 amz
    # i=14 an
    # i=15 ao
    # i=16 ap
    # i=17 aq
    # i=18 ar
    # i=19 as
    # i=20 at
    # i=21 au
    # i=22 av
    # i=23 aw
    # i=24 ax
    # i=25 ay
    # i=26 az

‘abcdefghijjklmnopqrstuvwxyz’ という文字列 S に対して、1 から 文字列の長さ len(S) まで for ループをまわしています。

そして、print 文で、S[0:len(S):i ] を出力しています。

これが、文字列を任意の間隔でスライスする部分で、詳しくみていくと、

[始点:終点:間隔] という指示になっています。

今回の例では、間隔の部分に 変数 i を割り当てたものでした。

ちなみに、例のように始点と終点について 0len(S) を使用する場合は、 [::i ] のように省略することができます。


さらにちなみに、[::-1] とした場合は 下のように文字列を逆順にならべることができます。

S = 'abcdefghijjklmnopqrstuvwxyz'

print(S[::-1])
# --> zyxwvutsrqponmlkjjihgfedcba

お役に立てればうれしいです。