Pythonのスライス名の実現方法


1、需要
コードはもう読めなくなりました。ハードコードのインデックスがあちこちにあります。彼らを最適化したいです。
2、解決策
コードの中にハードコードのインデックス値がたくさんあると、可読性とメンテナンス性が悪くなります。
内蔵されたslice関数はスライスオブジェクトを作成します。どこの運転でもスライス操作が可能です。

items=[0,1,2,3,4,5,6]
a=slice(2,4)
print(items[2:4])
print(items[a])
 
items[a]=[10,11,12,13]
print(items)
 
del items[a]
print(items[a])
print(items)
実行結果:

[2, 3]
[2, 3]
[0, 1, 10, 11, 12, 13, 4, 5, 6]
[12, 13]
[0, 1, 12, 13, 4, 5, 6]
sliceオブジェクトの例sがある場合。それぞれs.start、s.stopおよびs.step属性を通してそのオブジェクトに関する情報を得ることができます。たとえば:

items=[0,1,2,3,4,5,6]
a=slice(2,8,3)
print(items[a])
print(a.start)
print(a.stop)
print(a.step)
結果:

[2, 5]
2
8
3
さらに、スライスは、indices法を使用して、特定のサイズのシーケンスにマッピングされてもよい。これは元のグループに戻ります。すべての値は境界内に適切に制限されています。

s='HelloWorld'
a=slice(2,5)
print(a.indices(len(s)))
for i in range(*a.indices(len(s))):
  print(str(i)+":"+s[i])
結果:

(2, 5, 1)
2:l
3:l
4:o