使用numpy数组,你可以在方括号切片语法中使用某种不等式:
>>>arr = numpy.array([1,2,3])
>>>arr[arr>=2]
array([2, 3])
在常规python数据结构中是否存在某种等效语法?当我尝试时,我预计会出错:
>>>lis = [1,2,3]
>>>lis[lis > 2]
2
但不是某种类型的例外,我得到的返回值为2,这没有多大意义。
P.S。我根本找不到这个语法的文档,所以如果有人能指出我的numpy和常规的python(如果存在的话)会很棒。
答案 0 :(得分:7)
在Python 2.x lis > 2
中返回True
。这是因为操作数具有不同的类型,并且没有为这两种类型定义比较运算符,因此它按字母顺序("list" > "int"
)比较类名。由于True
与1
相同,因此您会在索引1处获得该项目。
在Python 3.x中,这个表达式会给你一个错误(一个不那么令人惊讶的结果)。
TypeError: unorderable types: list() > int()
要做你想做的事,你应该使用列表理解:
[x for x in lis if x > 2]
答案 1 :(得分:1)
使用列表理解:
[a for a in lis if a>=2]