バリケンのPython日記 RSSフィード

2008-07-21

[] del文  del文 - バリケンのPython日記 を含むブックマーク はてなブックマーク -  del文 - バリケンのPython日記  del文 - バリケンのPython日記 のブックマークコメント

Pythonには「del文」があるよ。del文は特殊な「文」で、「del 変数」とすると指定した変数を未定義にするよ。

次の例では、変数aはリスト「[1, 2, 5, 6]」に束縛されていたけど、「del a」とすることでその関係が解消されているよ(変数bは引き続きリスト「[1, 2, 5, 6]」に束縛されるよ)。

>>> a = [1, 2, 5, 6]
>>> b = a
>>> a
[1, 2, 5, 6]
>>> b
[1, 2, 5, 6]
>>> del a
>>> b
[1, 2, 5, 6]
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>>

変数bではリスト「[1, 2, 5, 6]」を参照できたけど、変数aでは参照できなくなっちゃったね。

ちなみに、Rubyにはdel文に相当するものはないよ。

del文では変数だけじゃなくて、リストのインデクスを指定して部分リストのそれぞれの束縛を解消することもできるよ。

>>> a = [0, 1, 2, 3, 4, 5, 6]
>>> a
[0, 1, 2, 3, 4, 5, 6]
>>> del a[0]
>>> a
[1, 2, 3, 4, 5, 6]
>>> del a[2:4]
>>> a
[1, 2, 5, 6]
>>>

ちなみにRubyの場合は、次のような感じだよ。部分リストにnilを代入することで削除を表すというのは、ちょっと違和感があるかも。

irb(main):001:0> a = [0, 1, 2, 3, 4, 5, 6]
=> [0, 1, 2, 3, 4, 5, 6]
irb(main):002:0> a.delete_at(0)
=> 0
irb(main):003:0> a
=> [1, 2, 3, 4, 5, 6]
irb(main):004:0> a[2...4] = nil
=> nil
irb(main):005:0> a
=> [1, 2, 5, 6]
irb(main):006:0>
トラックバック - http://python.g.hatena.ne.jp/muscovyduck/20080721