Python 変数とデータ型:型の理解と活用
変数とは、値を格納するための予約済みメモリ領域のことです。変数を作成すると、メモリ内に一定のスペースが確保されます。
変数のデータ型に基づいて、インタプリタはメモリを割り当て、予約されたメモリに何を格納できるかを決定します。したがって、変数に異なるデータ型を割り当てることで、整数、小数、文字などをこれらの変数に格納できます。
変数への値の代入
Python の変数は、メモリ領域を予約するために明示的な宣言を必要としません。変数に値を代入すると、宣言が自動的に行われます。等号(=)を使用して変数に値を代入します。
= 演算子の左側のオペランドは変数名、右側のオペランドは変数に格納される値です。例:
ライブ デモ#!/usr/bin/python counter = 100 # 整数の代入 miles = 1000.0 # 浮動小数点数 name = "John" # 文字列 print counter print miles print name
ここで、100、1000.0、"John" がそれぞれ counter、miles、name 変数に代入されています。次の結果が得られます。
100 1000.0 John
複数代入
Python では、単一の値を複数の変数に同時に代入できます。例:
a = b = c = 1
ここでは、値 1 の整数オブジェクトが作成され、3 つの変数すべてが同じメモリ位置に割り当てられます。複数のオブジェクトを複数の変数に代入することもできます。例:
a, b, c = 1, 2, "john"
ここでは、値 1 と 2 の 2 つの整数オブジェクトが変数 a と b に、値 "john" の文字列オブジェクトが変数 c に代入されます。
標準データ型
メモリに格納されるデータはさまざまな型があります。たとえば、人の年齢は数値として、住所は英数字として格納されます。Python には、それらのデータに対して可能な操作と格納方法を定義するさまざまな標準データ型があります。
Python には 5 つの標準データ型があります。
- Numbers(数値)
- String(文字列)
- List(リスト)
- Tuple(タプル)
- Dictionary(辞書)
Python の数値型
数値データ型は数値を格納します。値を代入すると数値オブジェクトが作成されます。例:
var1 = 1 var2 = 10
del 文を使用して、数値オブジェクトへの参照を削除することもできます。del 文の構文は:
del var1[,var2[,var3[....,varN]]]]
del 文を使用して単一のオブジェクトまたは複数のオブジェクトを削除できます。例:
del var del var_a, var_b
Python は 4 種類の数値型をサポートしています。
- int(符号付き整数)
- long(長整数、8進法と16進法で表現可能)
- float(浮動小数点実数)
- complex(複素数)
数値の例
数値の例をいくつか示します。
| int | long | float | complex |
|---|---|---|---|
| 10 | 51924361L | 0.0 | 3.14j |
| 100 | -0x19323L | 15.20 | 45.j |
| -786 | 0122L | -21.9 | 9.322e-36j |
| 080 | 0xDEFABCECBDAECBFBAEl | 32.3+e18 | .876j |
| -0490 | 535633629843L | -90. | -.6545+0J |
| -0x260 | -052318172735L | -32.54e100 | 3e+26J |
| 0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
Python では long に小文字の l を使用できますが、数字の 1 との混同を避けるため、大文字の L のみを使用することを推奨します。Python は長整数を大文字の L で表示します。
複素数は、x + yj で表される実数の順序対で構成されます。ここで x と y は実数、j は虚数単位です。
Python の文字列
Python の文字列は、クォーテーションマークで囲まれた連続した文字の集合として識別されます。Python ではシングルクォートとダブルクォートの両方のペアを使用できます。スライス演算子([ ] と [:])を使用して、インデックス 0 を文字列の先頭、-1 を末尾として部分文字列を取得できます。
プラス記号(+)は文字列連結演算子、アスタリスク(*)は反復演算子です。例:
ライブ デモ#!/usr/bin/python str = 'Hello World!' print str # 完全な文字列を出力 print str[0] # 文字列の最初の文字を出力 print str[2:5] # 3文字目から5文字目までを出力 print str[2:] # 3文字目から末尾までを出力 print str * 2 # 文字列を2回繰り返し print str + "TEST" # 連結された文字列を出力
次の結果が得られます。
Hello World! H llo llo World! Hello World!Hello World! Hello World!TEST
Python のリスト
リストは Python の複合データ型の中で最も汎用性が高いものです。リストは、カンマで区切られたアイテムを角括弧([])で囲んで表します。リストは C 言語の配列とある程度似ていますが、違いの 1 つは、リストに属するすべてのアイテムが異なるデータ型でもよいことです。
リストに格納された値には、スライス演算子([ ] と [:])を使用して、インデックス 0 をリストの先頭、-1 を末尾としてアクセスできます。プラス記号(+)はリスト連結演算子、アスタリスク(*)は反復演算子です。例:
#!/usr/bin/python list = ['abcd', 786, 2.23, 'john', 70.2] tinylist = [123, 'john'] print list # 完全なリストを出力 print list[0] # リストの最初の要素を出力 print list[1:3] # 2番目から3番目までの要素を出力 print list[2:] # 3番目から末尾までの要素を出力 print tinylist * 2 # リストを2回繰り返し print list + tinylist # 連結されたリストを出力
次の結果が得られます。
['abcd', 786, 2.23, 'john', 70.2] abcd [786, 2.23] [2.23, 'john', 70.2] [123, 'john', 123, 'john'] ['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
Python のタプル
タプルはリストと似たシーケンスデータ型です。タプルはカンマで区切られた複数の値で構成されます。しかしリストとは異なり、タプルは丸括弧で囲みます。
リストとタプルの主な違い:リストは角括弧([ ])で囲まれ、要素とサイズを変更できますが、タプルは丸括弧(( ))で囲まれ、更新できません。タプルは読み取り専用のリストと考えることができます。例:
ライブ デモ#!/usr/bin/python
tuple = ('abcd', 786, 2.23, 'john', 70.2)
tinytuple = (123, 'john')
print tuple # 完全なタプルを出力
print tuple[0] # タプルの最初の要素を出力
print tuple[1:3] # 2番目から3番目までの要素を出力
print tuple[2:] # 3番目から末尾までの要素を出力
print tinytuple * 2 # タプルの内容を2回出力
print tuple + tinytuple # 連結されたタプルを出力
次の結果が得られます。
('abcd', 786, 2.23, 'john', 70.2)
abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')
次のコードはタプルでは無効です。タプルの更新を試みたためです(タプルでは許可されていません)。リストでは同様の操作が可能です。
#!/usr/bin/python
tuple = ('abcd', 786, 2.23, 'john', 70.2)
list = ['abcd', 786, 2.23, 'john', 70.2]
tuple[2] = 1000 # タプルでは無効な構文
list[2] = 1000 # リストでは有効な構文
Python の辞書
Python の辞書は一種のハッシュテーブル型です。Perl で見られる連想配列やハッシュのように機能し、キーと値のペアで構成されます。辞書のキーはほぼすべての Python 型を使用できますが、通常は数値や文字列が使われます。一方、値は任意の Python オブジェクトにできます。
辞書は波括弧({ })で囲み、値の代入とアクセスには角括弧([ ])を使用します。例:
ライブ デモ#!/usr/bin/python
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john', 'code': 6734, 'dept': 'sales'}
print dict['one'] # 'one' キーの値を出力
print dict[2] # 2 キーの値を出力
print tinydict # 完全な辞書を出力
print tinydict.keys() # すべてのキーを出力
print tinydict.values() # すべての値を出力
次の結果が得られます。
This is one
This is two
{'dept': 'sales', 'code': 6734, 'name': 'john'}
['dept', 'code', 'name']
['sales', 6734, 'john']
辞書には要素間の順序の概念がありません。要素が「順不同」であると言うのは正しくありません。単に順序がないだけです。
データ型変換
組み込み型間で変換を実行する必要がある場合があります。型間の変換を行うには、型名を関数として使用するだけです。
あるデータ型から別のデータ型へ変換するための組み込み関数がいくつかあります。これらの関数は、変換された値を表す新しいオブジェクトを返します。
| 番号 | 関数と説明 |
|---|---|
| 1 | int(x [,base]) x を整数に変換。base は x が文字列の場合の基数を指定。 |
| 2 | long(x [,base]) x を長整数に変換。base は x が文字列の場合の基数を指定。 |
| 3 | float(x) x を浮動小数点数に変換。 |
| 4 | complex(real [,imag]) 複素数を作成。 |
| 5 | str(x) オブジェクト x を文字列表現に変換。 |
| 6 | repr(x) オブジェクト x を式文字列に変換。 |
| 7 | eval(str) 文字列を評価してオブジェクトを返す。 |
| 8 | tuple(s) s をタプルに変換。 |
| 9 | list(s) s をリストに変換。 |
| 10 | set(s) s をセットに変換。 |
| 11 | dict(d) 辞書を作成。d は (key, value) タプルのシーケンスでなければならない。 |
| 12 | frozenset(s) s をフローズンセットに変換。 |
| 13 | chr(x) 整数を文字に変換。 |
| 14 | unichr(x) 整数を Unicode 文字に変換。 |
| 15 | ord(x) 1 文字をその整数値に変換。 |
| 16 | hex(x) 整数を16進数文字列に変換。 |
| 17 | oct(x) 整数を8進数文字列に変換。 |
Python
- C# 変数とプリミティブデータ型:完全マスターガイド
- C++変数・リテラル・定数完全ガイド:基礎から実践まで
- C言語変数・定数・リテラル完全ガイド
- C言語ストレージクラス完全理解:スコープ・ライフタイム・パフォーマンス
- C++変数とデータ型:int、double、char、string、boolを徹底解説
- Python 変数・定数・リテラル: 包括的ガイド
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python グローバル・ローカル・非ローカル変数を理解する
- Python globalキーワード完全マスター: 使い方とタイミング
- Python辞書完全ガイド:作成、操作、高度なテクニック