2015年11月26日

リストの +=

Python の挙動でびっくりしたことを書いておく。

リストとタプルを足し算すると TypeError になる。

>>> [] + ()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "tuple") to list
>>>

至極当然。

ところが += では エラーにならない

>>> a = []
>>> a += (1,)
>>> a
[1]
>>> 

完全に虚を突かれた。

ちなみに += を使うと文字列も足せるし、実は iterable ならなんでもいけるっぽい。

>>> a += {2: None}
>>> a
[1, 2]
>>> a += "345"
>>> a
[1, 2, '3', '4', '5']
>>> def iterable():
...   yield 6
... 
>>> a += iterable()
>>> a
[1, 2, '3', '4', '5', 6]
>>>

ライブラリリファレンスとかからはこういう挙動は読み取れないけど、 どこを見たら書いてあるんですかね。

ラベル:Python
posted by mft at 17:32| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック