python的什么特性使得这个表达式(方括号中包含一个布尔表达式,就好像它是索引或键一样)有效?

2024-04-19 01:55:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

其中sfSFrame对象,sf['id']表示SFrame的列。你知道吗

此操作导致SFrame只包含方括号中表达式为真的行。你知道吗

注意:我要求的是python特性,比如“列表理解”、“生成器”等,而不是SFrame的特性。你知道吗

这行代码在标题为Logical Filters的部分的documentation for graphlab.SFrame中用作示例。你知道吗


Tags: 对象代码id标题列表for表达式documentation
2条回答

Python的布尔值只是int的子类,True等于1,False等于0。你知道吗

答案是:操作符过载。你知道吗

这尤其令人困惑,因为这段代码使用了几个重载运算符:[ ... ]>=<=&。你知道吗

在本例中,&<=>=被重载以进行每元素比较并返回1和0的列表,而[ ... ]被重载以接受1和0的列表

更多信息可以在这里找到:https://docs.python.org/3/reference/datamodel.html#object.lt

相关问题 更多 >