データ構造
即席ヘビつかい講座
データ構造
整数・実数・複素数
pythonではおなじみの整数や実数に加えて複素数を扱うことができます。
>>> a = 2; b = 3 >>> print a + b, a - b, a*b, a/b, a%b 5 -1 6 0 2 >>> a = 2.; b = 3.; print a + b, a - b, a*b, a/b 5.0 -1.0 6.0 0.666666666667 >>> a = 2 + 1J; b = 3 - 2J; print a + b, a - b, a*b, a/b (5-1j) (-1+3j) (8-1j) (0.307692307692+0.538461538462j)
虚数単位はJまたはjで表します。1+jのような場合も必ず1+1jとしなければならないことに注意をしてください。実数部と虚数部とに小数点をつけなくても、それぞれ実数扱いになります。
実数部・虚数部は
>>> a = 3 + 2J; print a.real, a.imag 3.0 2.0
のように参照できます。
リストとタプル
「配列」に相当するのが「リスト」と「タプル」です。
>>> a = [1, 2, 4, 8, 16] >>> print a[0], a[1], a[2], a[3], a[4] 1 2 4 8 16
リストの要素にアクセスする方法はc言語の配列と同様です。違うのは、
>>> print a[-1], a[-2], a[-3], a[-4], a[-5] 16 8 4 2 1
おおっ、自動的に周期境界条件が?と思いきや、
>>> print a[5] IndexError: list index out of range >>> print a[-6] IndexError: list index out of range
残念。そうは問屋が下ろしません。
>>> a = [1, 2]; b = [4, 8]; print a + b [1, 2, 4, 8] >>> a = (1, 2); b = (4, 8); print a + b (1, 2, 4, 8) >>> a = [1, 2]; b = ['a', 'b']; print a + b [1, 2, 'a', 'b'] >>> a = (1, 2); b = ('a', 'b'); print a + b (1, 2, 'a', 'b') >>> a = a + b; print a (1, 2, 'a', 'b') >>> print a[0] 1 >>> print a[-4], a[-3], a[-2], a[-1], a[0], a[1], a[2], a[3] 1 2 a b 1 2 a b >>> print a[-5] IndexError: tuple index out of range >>> print a[4] IndexError: tuple index out of range >>> a = [1, 2]; b = ('a', 'b'); print a + b TypeError: can only concatenate list (not "tuple") to list >>> a = [1, 2, 4, 8]; a[1] = 16; print a [1, 16, 4, 8] >>> a = (1, 2, 4, 8); a[1] = 16 TypeError: object doesn't support item assignment
range関数
range()は整列した整数からなる「リスト」を作り出す関数です。
>>> a = range(4); print a [0, 1, 2, 3] >>> a = range(-3, 4); print a [-3, -2, -1, 0, 1, 2, 3] >>> a = range(-3, 4, 2); print a [-3, -1, 1, 3]
range()で作成される「リスト」の要素は「整数」だけです。
>>> a = range(-3.1, 4.2, 2.2); print a DeprecationWarning: integer argument expected, got float [-3, -1, 1, 3]
辞書
クラス
データ構造.txt · 最終更新: 2022/08/23 13:34 by 127.0.0.1