繁体   English   中英

Python中的list / tuple切片语法中是否有某种表达式求值?

[英]is there some kind of expression evaluation within list/tuple slicing syntax within Python?

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

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

常规python数据结构中是否存在某种等价语法? 我尝试时遇到错误:

>>>lis = [1,2,3]
>>>lis[lis > 2]
2

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

ps我根本找不到这个语法的文档,所以如果有人能指出我的numpy和常规python(如果它存在)那将是伟大的。

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

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

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

要做你想做的事,你应该使用列表理解:

[x for x in lis if x > 2]

使用列表理解:

[a for a in lis if a>=2]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM