Pythonの配列操作

いまさらだけど、 http://0xcc.net/blog/archives/000043.htmlPython の部分を添削。

  • len(a) == 0 は、 if a: のようにリスト自体が空の時に偽になるので使わない。
  • a.pop(0) は del a[0] とも書ける。どちらでも良いが、多分属性参照が無い分 del の方が高速
  • a[:] = [] も同じく del a[:]
  • a.remove(x) ※最初の一つしか削除されない は、すべてのxを削除したいなら a = [y for y in a if y != x]
  • del(a[i]) は、 del が関数ではないので del a[i] と書く。
  • Ruby の a.uniq は、ソート済みに対する操作じゃないよね? 重複を削除するだけなら set(a) でいけるけど、順序の保存が必要なら z = []; for x in a: if x not in z: z.append(x) しか思いつかないなぁ。(要素数が多いときはsetを併用) Python 2.7 や 3.1 以降なら OrderedDict を使う。ソート済みのリストが対象であれば a = [x for x,_ in itertools.groupby(a)] も可。
このブログに乗せているコードは引用を除き CC0 1.0 で提供します。