(抜書)Dive into Python3 第4章
リストから個々の要素を取り出すのとちょうど同じように、インデックス記法を使って文字列から個々の文字を取り出せる。 リストと同様に、文字列は+演算子で連結できる。
私はそろそろ「100本ノック」の準備運動ができる頃かもしれません
- 文字列の逆順 文字列"stressed"の文字を逆に(末尾から先頭に向かって)並べた文字列を得よ.
- 「パタトクカシーー」 「パタトクカシーー」という文字列の1,3,5,7文字目を取り出して連結した文字列を得よ.
- 「パトカー」+「タクシー」=「パタトクカシーー」 「パトカー」+「タクシー」の文字を先頭から交互に連結して文字列「パタトクカシーー」を得よ.
主にこの辺のことである。
追記: 0102とやってなんと03で詰まりました。タスケテ。できました(+=演算子を忘れていたのと、ifの条件文の文法間違えてました)
">>> import humansize
import sys '1MB = 1000{0.modules[humansize].SUFFIXES[1000][0]}'.format(sys) '1MB = 1000KB'"
のところで、
sys.modules['humansize'].SUFFIXES[1000][0]は、si接尾語のリストの最初の要素'KB'だ。従って、例に出てきた{0.modules[humansize].SUFFIXES[1000][0]}という置換フィールドは、2文字の文字列KBで置換されることになる。
となっているのだが、ここで0にsysが代入されないのは何故だろうか(文法上、成立しないものが半自動的に弾かれているのか?)
>>>a_string = 'My alphabet starts where your alphabet ends.' >>>a_string[3:-3] 'alphabet starts where your alphabet en'
となっているのがよくわからなかったんだが……と打ちかけて、ピリオドをカウントし忘れていたことに気づいた。
bytesオブジェクトはイミュータブルだ。個々のバイトへ代入することはできない。もし個々のバイトを変更する必要があるときは、文字列スライスと結合演算子(これは文字列と同様に機能する)を使うこともできるし、bytesオブジェクトをbytearrayオブジェクトに変換することもできる。
Python3は、ソースコード(つまり.pyファイル)がutf-8でエンコードされていると想定する。 ☞Python2では、.pyファイルのデフォルトの文字コードはasciiだった。Python3ではデフォルトの文字コードはutf-8だ。 もしPythonのコードで異なる文字コードを使いたい場合は、文字コード宣言を各ファイルの先頭に書くことができる。
文字列に関しては、Python2と3とではいろいろと仕様変更があったようですね。