データ操作(Python_03)

この連載では、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再学習のまとめはこちら!!