概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
Head First Python 第2版 ―頭とからだで覚えるPythonの基本
- 作者:Paul Barry
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
スライスとは
letters[*開始*:*終了*:*刻み*]
Pythonのシーケンスオブジェクトにおける「スライス」は、「開始・終了・刻みの3つの要素を指定して、シーケンスオブジェクトから情報を取り出す方法」を指します。
以下の箇条書きは、スライスの開始・終了・刻みの説明です。
- 開始…スライスを開始するインデックス位置
- 省略時は0を指定したものとみなされる
- 終了…スライスを終了するインデックス位置
- 当該インデックス位置の要素そのものは含まない
- 省略時はリストで利用可能な最大値を指定したものとみなされる
- 刻み…スライスの間隔
- 省略時は1を指定したものとみなされる
スライスの戻り値
スライスの戻り値は、元のシーケンスオブジェクトと同じ型となります。
以下のサンプルは、文字列・リスト・タプルに対し、開始・終了・刻みの全てを省略したスライス操作を行った結果です。「戻り値の型は、元のオブジェクトの型と同じになる」という特徴を踏まえて見てみましょう。
print("Don't panic!"[::]) # => "Don't panic!" print(list("Don't panic!")[::]) # => ['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!'] print(tuple("Don't panic!")[::]) # => ('D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!')
スライス操作の結果が、「文字列に対して文字列、リストに対してリスト、タプルに対してタプルを戻す」というものであることがわかります。
スライスの実例
saying = "Don't panic!" letters = list(saying) print(letters[0:10:3]) # => ['D', "'", 'p', 'i'] print(letters[3:]) # => ["'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!'] print(letters[:10]) # => ['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i'] print(letters[::2]) # => ['D', 'n', 't', 'p', 'n', 'c']
それぞれ以下のようなスライスとなります。
letters[0:10:3]
- 開始インデックス位置は0
- 終了インデックス位置は10(10自身は含まない)
- 間隔は3
- => インデックス位置10までの2つおきの文字
letters[3:]
- 開始インデックス位置は3
- 終了インデックス位置は省略
- 間隔は省略
- => 最初3文字を飛ばし、残りすべての文字
letters[:10]
- 開始インデックス位置は省略
- 終了インデックス位置は10
- 間隔は省略
- => インデックス位置10までのすべての文字
letters[::2]
- 開始インデックス位置は省略
- 終了インデックス位置は省略
- => 1つおきのすべての文字