Python 即使列表中没有零,检查列表中是否有零也会返回True
因此,我与Spotlight(一个基于PyTorch的推荐系统库)合作,并尝试使用训练数据构建一组序列。Spotlight在创建这些序列时所做的一个内部检查是确保项目ID都是非零的,因为在序列中零被用作填充值 我知道我的输入数据中没有零(它是从我确保没有零的文件中读取的),但出于某种原因,Spotlight中的检查表明item ID列表中有零 更奇怪的是,当我尝试以下方法时会发生什么:Python 即使列表中没有零,检查列表中是否有零也会返回True,python,python-3.x,Python,Python 3.x,因此,我与Spotlight(一个基于PyTorch的推荐系统库)合作,并尝试使用训练数据构建一组序列。Spotlight在创建这些序列时所做的一个内部检查是确保项目ID都是非零的,因为在序列中零被用作填充值 我知道我的输入数据中没有零(它是从我确保没有零的文件中读取的),但出于某种原因,Spotlight中的检查表明item ID列表中有零 更奇怪的是,当我尝试以下方法时会发生什么: for id in interactions.item_ids: if id == 0:
for id in interactions.item_ids:
if id == 0:
print("there is a zero ID")
# This is how Spotlight checks
if 0 in interactions.item_ids:
print("there is a zero")
只有第二部分打印任何输出。第一个似乎没有检测到任何零
这让我很困惑。为了澄清,条目ID是int64
s的NumPy数组。前十个条目如下所示(我可以提供一个包含67000个条目的文件,所以你们可以检查我是否愚蠢,是否确实没有零):
谢谢您的帮助。事实证明,当我试图解决MCVE时,我解决了这个问题!显式执行
np.array(interactions.item\u id)
修复了这个问题 也许可以提供一个互动的例子。item_id看起来像什么。谢谢你的反馈,我已经在帖子中添加了前十个,如果需要的话,我可以上传一个包含67000个的文件。如果你这样做,你的代码是否到处都打印“False”?items_id=np.array([1339112919531343106128714053136711293],dtype=np.int64)打印(items_id==0)请阅读并遵循帮助文档中的发布指南,如创建此帐户时所建议的。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。您提供了一个文本文件,但您发布的代码假定它神奇地转变为所需的数据结构。相反,只需对产生问题的数据结构进行硬编码。我们不应该处理文件读取阴谋。
1339
1129
1953
1343
1061
1287
1405
31
3671
1293