这段代码看起来应该是无效的,但Python2.7似乎认为它是有效的:
sf[(sf['id'] >= 1) & (sf['id'] <= 2)]
其中sf
是SFrame
对象,sf['id']
表示SFrame
的列。你知道吗
此操作导致SFrame只包含方括号中表达式为真的行。你知道吗
注意:我要求的是python特性,比如“列表理解”、“生成器”等,而不是SFrame的特性。你知道吗
这行代码在标题为Logical Filters
的部分的documentation for graphlab.SFrame中用作示例。你知道吗
Python的布尔值只是int的子类,True等于1,False等于0。你知道吗
答案是:操作符过载。你知道吗
这尤其令人困惑,因为这段代码使用了几个重载运算符:
[ ... ]
、>=
、<=
和&
。你知道吗在本例中,
&
、<=
和>=
被重载以进行每元素比较并返回1和0的列表,而[ ... ]
被重载以接受1和0的列表更多信息可以在这里找到:https://docs.python.org/3/reference/datamodel.html#object.lt
相关问题 更多 >
编程相关推荐