プログラミングコンテストでは、文字列を対象に様々な操作を行う必要がある場合があります。
ここでは、ある文字列を任意の間隔でスライスする方法を、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 を割り当てたものでした。
ちなみに、例のように始点と終点について 0 と len(S) を使用する場合は、 [::i ] のように省略することができます。
さらにちなみに、[::-1] とした場合は 下のように文字列を逆順にならべることができます。
S = 'abcdefghijjklmnopqrstuvwxyz'
print(S[::-1])
# --> zyxwvutsrqponmlkjjihgfedcba
お役に立てればうれしいです。