====== 即席ヘビつかい講座 ======
* [[データ構造|データ構造]]
* [[入出力|入出力]]
* [[制御構造|制御構造]]
* [[関数・外部手続き|関数・外部手続き]]
===== データ構造 =====
==== 整数・実数・複素数 ====
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]
==== 辞書 ====
==== クラス ====