この質問は既に で検索されていますが、このステートメントはどのようにPythonで有効ですか?Python:どのようにstringと一緒に動作するのですか? 'spam' [1:3]これはどのように機能しますか?
>>> 'spam'[1:3]
>>> 'pa'
質問は、どのようにスライスがstrタイプに関連付けられているかです。それは「スパム」との平凡なつながりですか?
おかげ --Div
この質問は既に で検索されていますが、このステートメントはどのようにPythonで有効ですか?Python:どのようにstringと一緒に動作するのですか? 'spam' [1:3]これはどのように機能しますか?
>>> 'spam'[1:3]
>>> 'pa'
質問は、どのようにスライスがstrタイプに関連付けられているかです。それは「スパム」との平凡なつながりですか?
おかげ --Div
str
タイプは、__getslice__
メソッド(Python 2)と__getitem__
メソッド(Python 2と3の両方)を持っているためです。
dir('spam')
が表示されます。
また、あなたがより多くの詳細についてはhttps://docs.python.org/2/reference/datamodel.html#object.getsliceを参照することができます3.
pythonでのpython 2または'spam'.__getitem__(slice(1,3))
に'spam'.__getslice__(1,3)
を試してみてください。
完璧、情報ありがとう。 – user3069970
スライスは、オブジェクトのコピーを作成し、スライスがどのように機能するかを覚えておくべき
一つの方法は、最初の文字の左端で、文字の間を指して指標を考えることです文字列内の6 ...
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
番号の最初の行は、インデックス0の位置を与える。:0の番号が付けN個の文字列の最後の文字の右端は、例えば率nを有しています2番目の行は対応する負のインデックスを返します。 iからjまでのスライスは、それぞれiとjとラベル付けされたエッジ間のすべての文字で構成されます。あなたのケースでは
+---+---+---+---+
| s | p | a | m |
+---+---+---+---+
0 1 2 3 4
-4 -3 -2 -1
>>> 'spam'[1:3]
'pa'
このことができます場合は通常の配列のような文字列を考えます。例えば
0 1 2 3
s p a m
のでspam[1:3]
あなたは、単に(自分自身の長さ1の文字列である)文字の不変のリストのような文字列を考慮することができるpa
つまり、文字列の位置[1, 3)
の内容を提供します:
>>> list('spam')
['s', 'p', 'a', 'm']
>>> sorted('spam')
['a', 'm', 'p', 's']
>>> [c * 2 for c in 'spam']
['ss', 'pp', 'aa', 'mm']
それは割り当てが動作しないことを意味するが、スライスがリストの場合と全く同じである:
>>> 'spam'[1:3]
'pa'
>>> list('spam')[1:3]
['p', 'a']
これは文字列とリストではなく、スライス表記の文字列で、インデックス '1'から始まりインデックス '3'より前に終了する文字列 '' spam 'の一部を取ります。 –