Python 変数の型

変数はメモリに保存される値です。つまり、変数を作成するときにメモリ内に領域を確保します。

変数のデータ型に基づいて、インタプリタは指定されたメモリを割り当て、メモリに保存できるデータを決定します。

したがって、変数には異なるデータ型を指定でき、これらの変数には整数、小数、または文字を格納できます。



変数の代入

Python での変数の代入には型宣言は必要ありません。

各変数はメモリ内に作成され、変数の識別子、名前、データなどの情報が含まれます。

各変数は使用前に代入する必要があり、変数を代入して初めてその変数が作成されます。

等号=変数に値を代入するために使用します。

等号=演算子の左側は変数名で、等号=演算子の右側は変数に格納される値です。例:

例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- 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"

上記の例では、2 つの整数オブジェクト 1 と 2 がそれぞれ変数 a と b に割り当てられ、文字列オブジェクト "john" が変数 c に割り当てられます。



標準データ型

メモリに格納されるデータにはさまざまな型があります。

たとえば、人の年齢は数値で、名前は文字で格納できます。

Python には、さまざまな型のデータを格納するための標準型がいくつか定義されています。

Python には 5 つの標準データ型があります:

  • Numbers(数値)
  • String(文字列)
  • List(リスト)
  • Tuple(タプル)
  • Dictionary(辞書)


Python 数値

数値データ型は数値を格納するために使用されます。

それらは不変のデータ型です。つまり、数値データ型を変更すると新しいオブジェクトが割り当てられます。

値を指定すると、Number オブジェクトが作成されます:

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(複素数)
例

いくつかの数値型の例:

intlongfloatcomplex
1051924361L0.03.14j
100-0x19323L15.2045.j
-7860122L-21.99.322e-36j
0800xDEFABCECBDAECBFBAEl32.3e+18.876j
-0490535633629843L-90.-.6545+0J
-0x260-052318172735L-32.54e1003e+26J
0x69-4721885298529L70.2E-124.53e-7j
  • 長整数型には小文字の l も使用できますが、数字の 1 と混同しないように、大文字の L を使用することをお勧めします。Python は長整数型を表示するために L を使用します。
  • Python は複素数もサポートしています。複素数は実数部と虚数部で構成され、a + bj または complex(a,b) で表せます。複素数の実部 a と虚部 b はともに浮動小数点型です。

注意:long 型は Python2.X バージョンにのみ存在します。2.2 以降のバージョンでは、int 型データがオーバーフローすると自動的に long 型に変換されます。Python3.X バージョンでは long 型は削除され、int に置き換えられました。



Python 文字列

文字列(String)は、数字、文字、アンダースコアで構成される一連の文字です。

一般的には次のように記述します:

s = "a1a2···an"   # n>=0

これはプログラミング言語でテキストを表すデータ型です。

python の文字列リストには 2 つのインデックス指定方法があります:

  • 左から右へのインデックスはデフォルトで 0 から始まり、最大範囲は文字列の長さから 1 を引いたものです。
  • 右から左へのインデックスはデフォルトで -1 から始まり、最大範囲は文字列の先頭です。

文字列から部分文字列を取得する場合は、次を使用できます:[開始インデックス:終了インデックス]対応する文字列を切り出します。インデックスは 0 から始まり、正または負の数を指定できます。インデックスを空にすると、先頭または末尾まで取得します。

[開始インデックス:終了インデックス]取得される部分文字列には開始インデックスの文字は含まれますが、終了インデックスの文字は含まれません。

例:

>>> s = 'abcdef'
>>> s[1:5]
'bcde'

コロンで区切られた文字列を使用すると、python は新しいオブジェクトを返します。結果には、このオフセットのペアで識別される連続した内容が含まれ、左側の開始は下限を含みます。

上記の結果にはs[1]の値 b が含まれ、取得される最大範囲には終了インデックス、つまりs[5]の値 f は含まれません。

プラス記号(+)は文字列連結演算子で、アスタリスク(*)は繰り返し操作です。次の例を参照してください:

例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- str = 'Hello World!' print str # 完全な文字列を出力 print str[0] # 文字列の最初の文字を出力 print str[2:5] # 文字列の3番目から6番目までの文字を出力 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 リスト

List(リスト)は Python で最も頻繁に使用されるデータ型です。

リストは、ほとんどのコレクション系データ構造の実装を実現できます。文字、数値、文字列をサポートし、リスト(つまりネスト)を含めることもできます。

リストは[ ]で識別され、python で最も汎用的な複合データ型です。

リスト内の値のスライスには、変数[開始インデックス:終了インデックス]を使用して対応するリストを切り出すことができます。左から右へのインデックスはデフォルトで 0 から始まり、右から左へのインデックスはデフォルトで -1 から始まります。インデックスを空にすると、先頭または末尾まで取得します。

プラス記号+はリスト連結演算子で、アスタリスク*は繰り返し操作です。次の例を参照してください:

例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- list = [ 'サンプル', 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 # 結合したリストを出力

上記の例の出力結果:

['サンプル', 786, 2.23, 'john', 70.2]
サンプル
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['サンプル', 786, 2.23, 'john', 70.2, 123, 'john']

Python のリストスライスは 3 番目のパラメータを受け取ることができます。このパラメータはスライスのステップ幅です。次の例では、インデックス 1 からインデックス 4 の位置で、ステップ幅を 2(1 つ間隔)に設定して文字列を切り出します:



Python タプル

タプルはもう 1 つのデータ型で、List(リスト)に似ています。

タプルは()で識別されます。内部の要素はカンマで区切られます。ただし、タプルは再代入できないため、読み取り専用リストに相当します。

例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- tuple = ( 'サンプル', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john') print tuple # 完全なタプルを出力 print tuple[0] # タプルの最初の要素を出力 print tuple[1:3] # 2番目から4番目(含まない)までの要素を出力 print tuple[2:] # 3番目からリストの末尾までのすべての要素を出力 print tinytuple * 2 # タプルを2回出力 print tuple + tinytuple # 結合したタプルを出力

上記の例の出力結果:

('サンプル', 786, 2.23, 'john', 70.2)
サンプル
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('サンプル', 786, 2.23, 'john', 70.2, 123, 'john')

以下のタプルに対する操作は無効です。タプルは更新が許可されていませんが、リストは更新が許可されているためです:

例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- tuple = ( 'サンプル', 786 , 2.23, 'john', 70.2 ) list = [ 'サンプル', 786 , 2.23, 'john', 70.2 ] tuple[2] = 1000 # タプルでは不正な操作 list[2] = 1000 # リストでは有効な操作

タプルは更新が許可されていないため、上記のコードはエラーになります。結果は次のとおりです:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    tuple[2] = 1000    # 元组中是非法应用
TypeError: 'tuple' object does not support item assignment


Python 辞書

ディクショナリ(dictionary)は、リスト以外でPythonにおいて最も柔軟な組み込みデータ構造タイプです。リストは順序付けられたオブジェクトの集合であり、ディクショナリは順序付けられていないオブジェクトの集合です。

両者の違いは、ディクショナリ内の要素はキーによってアクセスされ、オフセットによってアクセスされるわけではないことです。

ディクショナリは「{ }」で識別されます。ディクショナリはインデックス(key)とそれに対応する値valueから構成されます。

例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'サンプル','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': 'サンプル'}
['dept', 'code', 'name']
['sales', 6734, 'サンプル']


Python データ型変換

時には、データの組み込み型を変換する必要があります。データ型の変換は、データ型を関数名として使うだけで済みます。

以下のいくつかの組み込み関数は、データ型間の変換を実行できます。これらの関数は、変換された値を表す新しいオブジェクトを返します。

関数説明

int(x [,base])

xを整数に変換します

long(x [,base] )

xを長整数に変換します

float(x)

xを浮動小数点数に変換します

complex(real [,imag])

複素数を作成します

str(x)

オブジェクトxを文字列に変換します

repr(x)

オブジェクトxを式文字列に変換します

eval(str)

文字列内の有効なPython式を評価して、オブジェクトを返します

tuple(s)

シーケンスsをタプルに変換します

list(s)

シーケンスsをリストに変換します

set(s)

可変集合に変換します

dict(d)

ディクショナリを作成します。dは(key,value)タプルのシーケンスである必要があります。

frozenset(s)

不変集合に変換します

chr(x)

整数を文字に変換します

unichr(x)

整数をUnicode文字に変換します

ord(x)

文字をその整数値に変換します

hex(x)

整数を16進数の文字列に変換します

oct(x)

整数を8進数の文字列に変換します

その他の拡張