Python slice() 関数
slice()Python でスライスオブジェクトを作成するための組み込み関数です。
スライスオブジェクトはシーケンスのスライス範囲を指定するために使用され、リスト、タプル、文字列など、スライス操作をサポートする任意の場所で使用できます。
単語の意味: slice「スライス」という意味で、スライスオブジェクトを作成するために使用します。
基本構文とパラメータ
構文形式
slice(stop) slice(start, stop) slice(start, stop, step)
パラメータの説明
- パラメータ start(省略可能):
- 型: 整数
- 説明: スライスの開始位置。デフォルトは 0 です。
- パラメータ stop:
- 型: 整数
- 説明: スライスの終了位置(含みません)。
- パラメータ step(省略可能):
- 型: 整数
- 説明: スライスのステップ幅。デフォルトは 1 です。
関数の説明
- 戻り値: スライスオブジェクトを返します。
- 特徴: スライスオブジェクトは繰り返し使用でき、非常に便利です。
例
例 1:スライスオブジェクトの作成
例
# スライスオブジェクトを作成
s1 = slice(5) # 0から5まで
s2 = slice(1, 5) # 1から5まで
s3 = slice(0, 10, 2) # 0から10まで、ステップ2
# リストのスライスで使用
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[s1]) # 出力: [0, 1, 2, 3, 4]
print(my_list[s2]) # 出力: [1, 2, 3, 4]
print(my_list[s3]) # 出力: [0, 2, 4, 6, 8]
s1 = slice(5) # 0から5まで
s2 = slice(1, 5) # 1から5まで
s3 = slice(0, 10, 2) # 0から10まで、ステップ2
# リストのスライスで使用
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[s1]) # 出力: [0, 1, 2, 3, 4]
print(my_list[s2]) # 出力: [1, 2, 3, 4]
print(my_list[s3]) # 出力: [0, 2, 4, 6, 8]
実行結果の予想:
[0, 1, 2, 3, 4] [1, 2, 3, 4] [0, 2, 4, 6, 8]
コードの解説:
slice(5)以下と同等[0:5]。slice(1, 5)以下と同等[1:5]。slice(0, 10, 2)以下と同等[0:10:2]。
例 2:スライスオブジェクトの属性
例
# スライスオブジェクトの属性を確認
s = slice(1, 10, 2)
print(s.start) # 出力: 1
print(s.stop) # 出力: 10
print(s.step) # 出力: 2
# 負のインデックス
s = slice(-3, -1)
print(s.start) # 出力: -3
print(s.stop) # 出力: -1
s = slice(1, 10, 2)
print(s.start) # 出力: 1
print(s.stop) # 出力: 10
print(s.step) # 出力: 2
# 負のインデックス
s = slice(-3, -1)
print(s.start) # 出力: -3
print(s.stop) # 出力: -1
実行結果の予想:
1 10 2 -3 -1
コードの解説:
- スライスオブジェクトには start、stop、step の3つの属性があります。
- 負のインデックスをサポートします。
例 3:実際の応用
例
# 再利用可能なスライスを作成
first_three = slice(3)
last_three = slice(-3, None)
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[first_three]) # 出力: [1, 2, 3]
print(my_list[last_three]) # 出力: [7, 8, 9]
# 多次元スライスに使用
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
row = slice(0, 2) # 最初の2行
col = slice(1, 3) # 2列目から3列目
print([row[col] for row in matrix[row]])
# 出力: [[2, 3], [5, 6]]
first_three = slice(3)
last_three = slice(-3, None)
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[first_three]) # 出力: [1, 2, 3]
print(my_list[last_three]) # 出力: [7, 8, 9]
# 多次元スライスに使用
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
row = slice(0, 2) # 最初の2行
col = slice(1, 3) # 2列目から3列目
print([row[col] for row in matrix[row]])
# 出力: [[2, 3], [5, 6]]
実行結果の予想:
[1, 2, 3] [7, 8, 9] [[2, 3], [5, 6]]
スライスオブジェクトの主な利点は再利用が可能なことで、コードをより明確にします。
その他の拡張