python - 为什么在 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_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()

关于python - 为什么在 Cython 中将列表转换为集合不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33195498/

相关文章:

python - python 中的缩放对数合并

python - scipy.stats.binom 库可以为特定的 "N"和 "k"返回值 "p"

python - for 循环对其表达式列表求值多少次?

使用 Hadoop 列表到矩阵

c++ - 使用 STL 容器设置 upper_bound

c++ - std::set 与用户定义的类型,如何确保没有重复

python - Spark 中 IF then ELSE 的等价物

python - 计算列表中的顺序出现和

r - 使用 lapply 根据多个条件和子集创建新变量

java - 更新多对多关系以包含新字段