補足_001_質問_001_Vivian

2461 ワード

まず、先辈たちと同级生たちに谢ります.一つは、先辈たちの精文を真剣に研究していないこと、二つ目は、一部の読者にある程度迷惑をかけていることです.そのため、私は申し訳ありません.今、「问题_001_Vivian」の中で厳密ではないところを修正します.
  1. s=s[:-1]文字列のいくつかの操作の本質を触っていない====これはPythonに特有の「演算子のリロード」(C++の言い方)であるはずですが、ここではまずこの[]の役割についてお話しします.
多くの言語に配列という概念がある場合、文字列は言語解釈器によって文字からなる配列と見なされるので、[]+「下付きまたはインデックス」と同じように対応する位置の要素にアクセスしたり変更したりすることができます.文字列を取得するにはどうすればいいですか?毎回ループを書いてインデックスがendに達したらbreak?それは面倒で、Pythonの対象に向かう思想に反するのではないでしょうか.そこでPythonは、string文字列のインデックスiからインデックスjまでのサブ文字列を取得し、範囲は[i,j)、iとjのデフォルト値はそれぞれ0とendです.この中には、負の数、一般的にjに使用され、その絶対値は右から左へのインデックスを表します.eg:
1 # str  string[i:j]   
2 my_string = "0123456789"
3 # i j       0 end
4 print(my_string[:]) #       :0123456789
5 #  j      
6 print(my_string[1:-2])  #       :1234567

ここまで話して締め切るつもりだったのですが、まだ完璧ではないという同級生の私信がありました.確かに、ここにはステップ長を表す3番目の変数kがあるので、string[i:j:k]===と完全に表現されています.範囲は[i,j)で、k文字ごとに1文字出力されます.
ステップ長kとは、k文字ごとに1つ出力する、すなわち、出力ごとに(k-1)文字をスキップし、デフォルト値は1、eg:
1 string = "0123456789"
2 print(string[0:len(string):1])  #   :0123456789
3 print(string[0:len(string):2])  #   :02468