Python listとreference counter

ずっと前に、PyList_Appendを使ってメモリリークしてしまったので、PyList_SetItemを使うようにしていたが、その理由を理解していなかった。PyList_Appendはreference countを増やしてしまうが、PyList_SetItemはreferenceをもとのPyObjectから奪ってしまうので、reference countが変わらない、ということらしい。
http://stackoverflow.com/questions/6977161/where-should-i-put-py-incref-and-py-decref-on-this-block-in-python-c-extension
http://stackoverflow.com/questions/3512414/does-this-pylist-appendlist-py-buildvalue-leak