对于 numpy 数组,您可以在方括号切片语法中使用某种不等式:

>>>arr = numpy.array([1,2,3])
>>>arr[arr>=2]
array([2, 3])

常规 python 数据结构中是否有某种等效的语法?当我尝试时,我预计会出现错误:
>>>lis = [1,2,3]
>>>lis[lis > 2]
2

但是我得到的不是某种类型的异常,而是返回值 2,这没有多大意义。

附言我根本找不到这种语法的文档,所以如果有人能指出我的 numpy 和常规 python(如果存在),那就太好了。

最佳答案

在 Python 2.x 中 lis > 2 返回 True 。这是因为操作数具有不同的类型,并且没有为这两种类型定义比较运算符,因此它按字母顺序 ( "list" > "int" ) 比较类名。由于 True1 相同,因此您将获得索引 1 处的项目。

在 Python 3.x 中,这个表达式会给你一个错误(一个不那么令人惊讶的结果)。

TypeError: unorderable types: list() > int()

To do what you want you should use a list comprehension:

[x for x in lis if x > 2]

关于python - Python 中的列表/元组切片语法中是否有某种表达式评估?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8196349/

10-12 00:48