这段代码看起来应该是无效的,但是python 2.7似乎认为它是有效的:

sf[(sf['id'] >= 1) & (sf['id'] <= 2)]


其中sfSFrame对象,而sf['id']引用SFrame的列。

此操作将导致一个SFrame仅包含方括号中的表达式为true的行。

注意:我要的是python功能,例如“列表理解”,“生成器”等,而不是SFrame的功能。

这行代码在标题为Logical Filtersdocumentation for graphlab.SFrame中用作示例。

最佳答案

答案是:运算符重载。

这尤其令人困惑,因为此代码段使用了多个重载运算符:[ ... ]>=<=&

在这种情况下,看起来&<=>=被重载以进行每个元素的比较并返回1和0的列表,而[ ... ]被重载以接受1和0的列表。 。

有关此的更多信息,请参见:https://docs.python.org/3/reference/datamodel.html#object.lt

10-06 14:53