この連載では、Pythonについて色々な形で再学習に取り組んでいます。前回の記事はこちらになります。 hirocom777.hatenadiary.org 現時点で確信が持てるわけではないのですが、Pythonでは操作対象がデータ自体だということが1つの肝ではないのでしょうか。
それでは早速データを操作してみましょう。
算術演算子と累算代入演算子
Pythonにも他のプログラミング言語同様に加減乗除の算術演算子(+,-,*,/)があります。その他にも余り(%)、べき乗(**)、整数除算(//)があります。特筆すべきは整数除算ですね。他の言語であまり見かけない気がします。
print(5//2) #2を返す
とすると小数点部分が切り捨てられて、2が返ってくるんですね。
また、前回データに変数を割り当てる際に使用した「=」なんですが、これを代入演算子と呼びます。算術演算子の右にこれを付けたものを累算代入演算子と呼びます。左辺の変数と右辺の値(または変数、式)を算術演算して左辺の変数に代入します。
x = 1 x += 2 print(x) #3を返す
とすると、3が返ってきます。他の言語にも似たようなものがあるのですが、累算代入演算子と呼ばれてはいないようですね。何が違うのかな?
文字列とシーケンス
文字列を表記するには、文字データを「'」または「"」で囲むということは前回書きました。これが文字列型のデータ(オブジェクト)なのですが、左から順番に並んでいる文字の集まりと考えられます。つまり順番のある要素の集まりで、これをシーケンスと呼びます。他にもシーケンスに該当するオブジェクトがあります。
シーケンスなオブジェクトはインデックスを持ちます。インデックスを使って要素を参照できます。オブジェクトの後ろに角かっこで囲った整数を指定すると、その位置の文字参照できます。一番左の文字のインデックスが0になります。
print('Text'[0]) #'T'を返す print('Text'[3]) #'x'を返す
また、インデックスにマイナスの値を指定すると、文字列の右からの位置を参照できます。一番右の文字のインデックスが -1になります。
print('Text'[-1]) #'t'を返す print('Text'[-3]) #'e'を返す
また、オブジェクトの一部を切り出すこともできます。これをスライスといいます。指定方法は以下になります。
文字列[start:stop:step]
startは開始位置、stopは終了位置の1つ手前、stepは飛ばしの要素数です。
print('Text'[1:3]) #'ex'を返す print('Text'[2:]) #'xt'を返す print('Text'[:2]) #'Te'を返す
stepを設定すると、指定した範囲の要素をstepの数で飛ばして返します。
print('123456789'[2:7:2]) #'357'を返す
文字列の結合とその他の表記方法
文字列の結合は算術演算子の「+」を使います。
print('ABC' + 'DEF') #'ABCDEF'を返す
文字連結は文字列同士のみ有効です。文字列データ以外を結合したいのであれば、str関数で文字列型に型変換(キャスト)する必要があります。
print('ABC' + str(123)) #ABC123を返す print('ABC' + 123) #エラーとなる
文字出力の制御を行う特殊な文字列を表示する場合は、エスケープシーケンスを使用します。「\」と文字の組み合わせで表現します。以下に、主なエスケープシーケンスの記述方法をご紹介します。
エスケープシーケンス | 説明 |
---|---|
\t | タブ |
\n | LF(改行) |
\r | CR(復帰) |
\’ | シングルクォーテーション |
\” | ダブルクォーテーション |
\ | バックスラッシュ |
文字列リテラルの中に変数や式を埋め込みたい場合には、フォーマット済み文字列を使います。文字リテラル内に{}で囲って変数や数式を埋め込みます。文字リテラルの先頭に「f'」を付けます。
first_name = 'Tom' age = 25 print(f'{first_name}は{age}です。') #'Tomは25です。'を返す
フォルダーのパスなどを表現する際、エスケープシーケンスで使う「\」等の文字をそのまま使用したい場合があります。こんな時には、文字リテラルの先頭に「r'」を付けます。
print(r'r'C:\Users') #'C:\Users'を返す
次回は制御構文
いかがでしょうか。基本的なデータ操作について分かってきましたね。Pythonには他にもデータ型がありますが、追々明確にしていきたいと思います。次回は制御構文です。お楽しみに!! hirocom777.hatenadiary.org Python再学習のまとめはこちら!!