这段代码看起来应该是无效的,但是python 2.7似乎认为它是有效的:
sf[(sf['id'] >= 1) & (sf['id'] <= 2)]
其中
sf
是SFrame
对象,而sf['id']
引用SFrame
的列。此操作将导致一个SFrame仅包含方括号中的表达式为true的行。
注意:我要的是python功能,例如“列表理解”,“生成器”等,而不是SFrame的功能。
这行代码在标题为
Logical Filters
的documentation for graphlab.SFrame中用作示例。 最佳答案
答案是:运算符重载。
这尤其令人困惑,因为此代码段使用了多个重载运算符:[ ... ]
,>=
,<=
和&
。
在这种情况下,看起来&
,<=
和>=
被重载以进行每个元素的比较并返回1和0的列表,而[ ... ]
被重载以接受1和0的列表。 。
有关此的更多信息,请参见:https://docs.python.org/3/reference/datamodel.html#object.lt