Python 为什么在Cython中将列表转换为集合不起作用?

Python 为什么在Cython中将列表转换为集合不起作用?,python,list,set,cython,Python,List,Set,Cython,我想要实现的是将list转换为set并返回结果: cpdef list_to_set(list huge_list): cdef list ids cdef set final_ids=() for ids in huge_list: final_ids.update(set(ids)) return final_ids 我这样称呼它: from core import list_to_set . . . list_to_set.list_to

我想要实现的是将
list
转换为
set
并返回结果:

cpdef list_to_set(list huge_list):
    cdef list ids
    cdef set final_ids=()
    for ids in huge_list:
        final_ids.update(set(ids))

    return final_ids
我这样称呼它:

from core import list_to_set
.
.
.
list_to_set.list_to_set(list(dataframe['ids'].values))
我得到以下错误:

TypeError('Expected set, got tuple',)
为什么它应该是一个元组,为什么它需要一个集合而不是一个列表,因为我一直在发送一个列表


编辑1:

为了简化问题,我使用了下面的函数,得到了相同的错误:

list_to_set.list_to_set([[12,14], [5,6]])
()
是一个元组文本;类型声明和实际值的类型不匹配。您需要改用
set()

cdef set final_ids = set()

将列表转换为集合通常需要19秒左右!没有办法改进吗?@AlirezaHos,你可以将
final\u id.update(set(ids))
更改为
final\u id.update(ids)
,因为
set.update
接受任何iterable。我应该提到
final\u id
是一个集合列表,所以将其更改为
cdef list final\u id=[]
然后将集合添加到此列表中。@AlirezaHos,您能发布另一个更新内容的问题吗?