pythonスライス詳細
3256 ワード
まず、原理的にスライス演算を分析します.
listのスライス、内部は呼び出し_getitem__,__setitem__,__delitem__とslice関数です.slice関数はrange()関数に関連しています.
スライスに渡されるキーは特殊なsliceオブジェクトです.このオブジェクトには、要求されたスライス方位を記述できる属性があります.たとえば、次のようになります.
1
2
3
4
Pythonのスライス機能は、実際には多くのプログラマーが考えているよりも強力です.
1
注意:ステップ値はstep
Step>0の場合
スライスはstart(startを含む)から始まり、end(endを含まない)まで終了し、**は左から右へ**し、(step-1)(インデックス間の差はstepであるが、間隔の要素はstep-1)個の要素ごとに切り取る.
この場合、startが指す位置はendが指す位置の左側にあるはずです.そうしないと、戻り値が空になります.
Step<0の場合
スライスはstart(startを含む)から始まり、end(endを含まない)で終わり、**は右から左へ**し、(step-1)(インデックス間の差はstepであるが、間隔の要素はstep-1)個の要素ごとに切り取られる.
この場合、startが指す位置はendが指す位置の右側にあるはずです.そうしないと、戻り値が空になります.
古典的な応用は、文字列を反転することです.
例:
1
2
結果:
'moc.batnohtyp'
スライス境界の問題
例:
1
2
3
4
5
6
注意:私が使用しているpythonバージョンはpython 2です.7,pythonのスライスにバージョン互換性の問題がある.python 3にはより高度な機能と使い方があり、使用時には必ず自分のpythonバージョンに注意してください.
listのスライス、内部は呼び出し_getitem__,__setitem__,__delitem__とslice関数です.slice関数はrange()関数に関連しています.
スライスに渡されるキーは特殊なsliceオブジェクトです.このオブジェクトには、要求されたスライス方位を記述できる属性があります.たとえば、次のようになります.
1
2
3
4
a = [
1
,
2
,
3
,
4
,
5
,
6
]
x = a [
1
:
5
] # x = a.__getitem__( slice (
1
,
5
, None ) )
a [
1
:
3
] = [
10
,
11
,
12
]# a.__setitem__( slice (
1
,
3
, None ), [
10
,
11
,
12
] )
del a [
1
:
4
]# a.__delitem__( slice (
1
,
4
, None ) )
Pythonのスライス機能は、実際には多くのプログラマーが考えているよりも強力です.
1
a
=
m [
0
:
100
:
10
]
# ( =10)
注意:ステップ値はstep
Step>0の場合
スライスはstart(startを含む)から始まり、end(endを含まない)まで終了し、**は左から右へ**し、(step-1)(インデックス間の差はstepであるが、間隔の要素はstep-1)個の要素ごとに切り取る.
この場合、startが指す位置はendが指す位置の左側にあるはずです.そうしないと、戻り値が空になります.
Step<0の場合
スライスはstart(startを含む)から始まり、end(endを含まない)で終わり、**は右から左へ**し、(step-1)(インデックス間の差はstepであるが、間隔の要素はstep-1)個の要素ごとに切り取られる.
この場合、startが指す位置はendが指す位置の右側にあるはずです.そうしないと、戻り値が空になります.
古典的な応用は、文字列を反転することです.
例:
1
2
>>>
str
=
'pythontab.com'
>>>
str
[::
-
1
]
結果:
'moc.batnohtyp'
スライス境界の問題
例:
1
2
3
4
5
6
s
=
[
1
,
2
,
3
,
4
]
# S 0 4
s[
-
100
:
100
]
# [1,2,3,4] -100 ,100 : s[0:4]
s[
-
100
:
-
200
]
# [] -100,-200 , : s[0:0]
s[
100
:
200
]
# [] 100,200 , : s[4:4]
s[:
100
]
# [1,2,3,4] 0
s[
0
:]
# [1,2,3,4]
注意:私が使用しているpythonバージョンはpython 2です.7,pythonのスライスにバージョン互換性の問題がある.python 3にはより高度な機能と使い方があり、使用時には必ず自分のpythonバージョンに注意してください.