Встроенный список был переопределен в локальной области.Вот пример обходного пути, если вы действительно хотите использовать list ():
def list(a, b): pass # somewhere list is redefined
try:
c = list() # so this will fail
except TypeError as e:
print "TypeError:", e # with this error
from __builtin__ import list as lst # but we can get back the list builtin
c = lst() # and use it without overriding the local version of list
print c
В вашем случае минимальным изменением будет замена ids=list(ids)
на
ids = __import__('__builtin__').list(ids)
который вообще не меняет вашего пространства имен, но меня огорчает.
Редактировать: Смотрите комментарий @ Alex-Laskin для более простого одноразового способа сделать это.