組み込み型には 6 つの配列型があります: 文字列、ユニコード文字列、 リスト、タプル、バッファ、そして xrange オブジェクトです。
文字列リテラルは 'xyzzy'
、"frobozz"
といったように、
単引用符または二重引用符の中に書かれます。
文字列リテラルについての詳細はは、
Python リファレンスマニュアル
の第 2 章を読んで下さい。
Unicode 文字列はほとんど文字列と同じですが、u'abc'
、
u"def"
といったように先頭に文字 "u" を付けて
指定します。
リストは [a, b, c]
のように要素をコンマで区切り角括弧で
囲って生成します。タプルは a, b, c
のようにコンマ演算子で
区切って生成します (角括弧の中には入れません)。
丸括弧で囲っても囲わなくてもかまいませんが、空のタプルは
()
のように丸括弧で囲わなければなりません。
要素が一つのタプルでは、例えば (d,)
のように、要素の後ろに
コンマをつけなければなりません。
バッファオブジェクトは Python の構文上では直接サポートされていませんが、 組み込み関数 buffer() で生成することができます。バッファオブジェクトは結合や反復をサポート していません。
xrange オブジェクトは、オブジェクトを生成するための特殊な構文がない
点でバッファに似ていて、関数 xrange()で生成します。
xrange オブジェクトはスライス、結合、反復をサポートせず、
in
、 not in
、min() または max()
は効率的ではありません。
ほとんどの配列型は以下の演算操作をサポートします。"in" および "not in" は比較演算と同じ優先度を持っています。 "+" および "*" は対応する数値演算と同じ優先度です。 2.8
以下のテーブルは配列型の演算を優先度の低いものから順に挙げたものです (同じボックス内の演算は同じ優先度です)。テーブル内の s および t は同じ型の配列です; n、i および j は整数です:
演算 | 結果 | 注釈 |
---|---|---|
x in s |
s のある要素 x と等しい場合 1 、そうでない場合 0 |
(1) |
x not in s |
s のある要素が x と等しい場合 0 、そうでない場合 1 |
(1) |
s + t |
s および t の結合 | |
s * n , n * s |
s の浅いコピー n 個からなる結合 | (2) |
s[i] |
s の 0 から数えて i 番目の要素 | (3) |
s[i:j] |
s の i 番目から j 番目までのスライス | (3), (4) |
s[i:j:k] |
s の i 番目から j 番目まで、k 毎のスライス | (3), (5) |
len(s) |
s の長さ | |
min(s) |
s の最小の要素 | |
max(s) |
s の最大の要素 |
注釈:
in
および not in
は部分文字列の一致テスト
と同じように動作します。バージョン 2.3 以前の Python では、
x は長さ 1 の文字列でした。Python 2.3 以降では、x
はどの長さでもかまいません。
0
以下の値の場合、0
として
扱われます (これは s と同じ型の空の配列を表します)。
コピーは浅いコピーなので注意してください; 入れ子になったデータ
構造はコピーされません。これは Python に慣れていないプログラマを
よく悩ませます。例えば以下のコードを考えます:
>>> lists = [[]] * 3 >>> lists [[], [], []] >>> lists[0].append(3) >>> lists [[3], [3], [3]]
上のコードでは、 lists
はリスト [[]]
(空のリストを唯一の
要素として含んでいるリスト) の3つのコピーを要素とするリストです。
しかし、リスト内の要素に含まれているリストは各コピー間で共有されています。
以下のようにすると、異なるリストを要素とするリストを生成できます:
>>> lists = [[] for i in range(3)] >>> lists[0].append(3) >>> lists[1].append(5) >>> lists[2].append(7) >>> lists [[3], [5], [7]]
len(s) + i
または len(s) + j
が代入されます。
しかし -0
は 0
のままなので注意してください。
i <= k < j
となるようなインデクス k
を持つ要素からなる配列として定義されます。i または j が
len(s)
よりも大きい場合、len(s)
を使います。
i が省略された場合、0
を使います。
j が省略された場合、len(s)
を使います。
i が j 以上の場合、スライスは空の配列になります。
0
<=
n <
abs(i-j)
となるような、
インデクスx = i + n*k
を持つ要素からなる配列として
定義されます。
i または j len(s)
より大きい場合、len(s)
を使います。i または j を省略した場合、``最後''
(k の符号に依存)を示す値を使います。k はゼロにできないので
注意してください。