Python - 相关:错误不支持/ /''generator'和'int'的操作数类型

问题描述 投票:-1回答:2

我试图执行一个python代码,我收到一个错误

unsupported operand type(s) for /: 'generator' and 'int'

代码:

def getCorrelation(user1,user2):
    ## user1 and user2 are two series
    list1=[1,2,3,4,5,6,78,9,12]
    user1=np.array(user1[i] for i in list1)

    user2=np.array(user2[i] for i in list1)


    return correlation(user1,user2)

getCorrelation(user1,user2)
python scipy correlation recommendation-engine
2个回答
1
投票

你的user表达式产生包含一个生成器的数组:

In [108]: np.array(i for i in alist)                                                 
Out[108]: array(<generator object <genexpr> at 0x7f0b7bc98e60>, dtype=object)

有了正确的列表理解:

In [109]: np.array([i for i in alist])                                               
Out[109]: array([1, 2, 3, 4])

回溯应该表明当这样的数组传递给correlation函数时会发生错误。

In [110]: np.array(i for i in alist)/2                                               
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-110-a87b95ad6f4b> in <module>
----> 1 np.array(i for i in alist)/2

TypeError: unsupported operand type(s) for /: 'generator' and 'int'

或测试一个简单的发电机:

In [111]: g = (i for i in alist)                                                     
In [113]: g                                                                          
Out[113]: <generator object <genexpr> at 0x7f0b7bc9b0f8>
In [114]: g/2                                                                        
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-114-f5357a50c56f> in <module>
----> 1 g/2

TypeError: unsupported operand type(s) for /: 'generator' and 'int'

-1
投票

看看user1,user2类型,这可以告诉你一些事情。使用:type(user1)和type(user2)并查看输出。

© www.soinside.com 2019 - 2024. All rights reserved.