スライス(Python)
今回はスライスについて。
スライスを使うと、リストやタプルの要素、文字列の範囲を指定して、
必要な部分だけを取り出すことができる。
[start:stop]
num = {1,2,3,4,5,6,7,8,9} print(num[2:5]) #num[2]からnum[4]まで #[3, 4, 5]
また、
print(num[-1]) #9
であり、スライスでも負の値で場所を指定できる。
print(num[1:-1]) #num[1]からnum[-2]まで #[2, 3, 4, 5, 6, 7, 8]
[start:stop:step]
増加量の指定も可能
print(num[1:5:2]) #num[1]からnum[4]まで2ずつ #[2, 4]
増加量には負の値も指定できる
print(num[5:1:-1]) #num[5]からnum[2]まで1ずつ減少 #[6, 5, 4, 3]
省略
また、全ての範囲で実行したい場合、一つ目のコロンの両端の値を省略できる
print(num[::2]) #[1, 3, 5, 7, 9]
増加量も省略すると、num[0]からnum[-1]まで全ての範囲が表示される
print(num[::]) # ==print(num[:])==print(num) #[1, 2, 3, 4, 5, 6, 7, 8, 9]
最初の位置を省略
print(num[:0:-1]) #num[-1]からnum[1]まで1ずつ減少 #[9, 8, 7, 6, 5, 4, 3, 2]
最後の位置を省略
print(num[-1::-1]) #num[-1]からnum[0]まで1ずつ減少 #[9, 8, 7, 6, 5, 4, 3, 2, 1]
つまり、最初と最後の位置を省略すると
print(num[::-1]) #num[-1]からnum[0]まで1ずつ減少 #[9, 8, 7, 6, 5, 4, 3, 2, 1]
つまり、[::-1]をつかうと逆順に並べ替えることができる
(いまいち活用法が思い浮かびませんが)
使ってみる
例えば、a,b,cと入力してc,b,aと出力したいとき、
スライスを使わずにやってみようとしたらこんなことに
char = input() moji = list(char) length = len(moji) while 0 <= length-1: print(moji[length-1], end = '') length -= 1
長い!!そして美しくないと怒られそう
スライスを使うととてもコンパクトになる
char = input() rahc= char[::-1] print(rahc)