リストオブジェクトはオブジェクト自体の変更を可能にする追加の操作を サポートします。他の変更可能な配列型 (を言語に追加する場合) も、 それらの操作をサポートしなければなりません。 文字列およびタプルは変更不可能な配列型です: これらのオブジェクトは 一度生成されたらそのオブジェクト自体を変更することができません。 以下の操作は変更可能な配列型で定義されています (ここで x は 任意のオブジェクトとします):
操作 | 結果 | 注釈 |
---|---|---|
s[i] = x |
s の要素 s を x と入れ替えます | |
s[i:j] = t |
s の i から j 番目までの要素を t と入れ替えます | |
del s[i:j] |
s[i:j] = [] と同じです |
|
s[i:j:k] = t |
s[i:j:k] の要素を t と入れ替えます |
(1) |
del s[i:j:k] |
リストから s[i:j:k] の要素を削除します |
|
s.append(x) |
s[len(s):len(s)] = [x] と同じです |
(2) |
s.extend(x) |
s[len(s):len(s)] = x と同じです |
(3) |
s.count(x) |
s[i] == x となる i の個数を返します |
|
s.index(x[, i[, j]]) |
s[k] == x かつ
i <= k < j となる最小の k を返します。 |
(4) |
s.insert(i, x) |
i >= 0 の場合の s[i:i] = [x] と同じです |
(5) |
s.pop([i]) |
x = s[i]; del s[i]; return x と同じです |
(6) |
s.remove(x) |
del s[s.index(x)] と同じです |
(4) |
s.reverse() |
s の値の並びを反転します | (7) |
s.sort([cmpfunc=None]) |
s の要素を並べ替えます | (7), (8), (9), (10) |
-1
なので、
標準では最後の要素をリストから除去して返します。
たとえば、リストを逆順に並べ替えるためにには、要素を反転して順序づけする
ような比較関数で sort() を使うより、sort() の後に
reverse() を呼ぶほうがはるかに高速です。比較関数として
None を渡すことは、比較関数なしで sort() を呼ぶのと
同じ意味です。
バージョン2.3 以降で変更された 仕様:
None
を渡すのと、cmpfunc を省略した場合とで、
同等に扱うサポートを追加
sort() メソッドに cmpfunc 引数を使う例として、シーケンスのリストを、シーケンスの 2 つ目の要素でソートする場合を考えてみましょう。
def mycmp(a, b): return cmp(a[1], b[1]) mylist.sort(mycmp)
それなりにサイズの大きいデータ構造に対しては、より時間効率のよいアプローチが、頻繁に使われます。
tmplist = [(x[1], x) for x in mylist] tmplist.sort() mylist = [x for (key, x) in tmplist]
Python 2.3 の C 実装では、この間リストは空に見えるようになり、 並べ替え中にリストが変更されたことが検出されると ValueError が送出されます。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。