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文で回すのが一番早い点には要注意です。
おしまい。