Pythonリスト遊び

Pythonでリストを操作する場合、基本的に、2つの方針があります。

  • 新しいリストを作成する
  • インスタンスメソッドを使う(破壊的)

これを意識した上で、スライス、==とisの違い、リスト内包記法、filter, map, reduce, ...などを理解していると捗ります。

>>> a.append(0)
>>> a = a + [1]
>>> a
[0, 1]
>>> a *= 2
>>> a
[0, 1, 0, 1]
>>> a.append((0, 1))
>>> a
[0, 1, 0, 1, (0, 1)]
>>> a *= 2
>>> a
[0, 1, 0, 1, (0, 1), 0, 1, 0, 1, (0, 1)]
>>> a.index((0, 1))
4
>>> b = a[:]
>>> b.remove((0, 1))
>>> b
[0, 1, 0, 1, 0, 1, 0, 1, (0, 1)]
>>> del b[b.index((0, 1))]
>>> b
[0, 1, 0, 1, 0, 1, 0, 1]
>>> [x for x in a if x != (0, 1)]
[0, 1, 0, 1, 0, 1, 0, 1]
>>> a
[0, 1, 0, 1, (0, 1), 0, 1, 0, 1, (0, 1)]
>>> [x for x in a if x is not a[a.index((0, 1))]]
[0, 1, 0, 1, 0, 1, 0, 1]
>>> a[a.index((0, 1))] = (0, 1)
>>> a
[0, 1, 0, 1, (0, 1), 0, 1, 0, 1, (0, 1)]
>>> [x for x in a if x is not a[a.index((0, 1))]]
[0, 1, 0, 1, 0, 1, 0, 1, (0, 1)]
>>> b = a[:4] + a[5:-1]
>>> b
[0, 1, 0, 1, 0, 1, 0, 1]
>>> reduce(lambda acc, x: acc + x, b, 0)
4
>>> [(x[0]+x[1]) / 2 for x in zip(range(len(b)), b) if x[0] % 2 == 1]
[1, 2, 3, 4]

関数型っぽく楽しめますが、普通にfor文で回すのが一番早い点には要注意です。

おしまい。