我正在阅读Is there a numpy builtin to reject outliers from a list并遇到了一个我不熟悉的python列表语法。
问题:<
或>
在列表的[]
内使用了什么?
e.g。 example_list[a < b]
我在终端玩了一些,但这对我没有任何帮助:
>>> ex = [1,2,3,4]
>>> ex[0<5]
2
>>> ex[0>5]
1
>>> ex[0>3]
1
>>> ex[0>0]
1
>>> ex[0<0]
1
>>> ex[1<0]
1
>>> ex[1<5]
2
答案 0 :(得分:3)
<
将返回True
或False
,并且它们在Python中等于1和0。因此,您将获得第一个或第二个项目。
>>> True == 1
True
>>> False == 0
True
>>> 'ab'[True]
'b'
>>> 'ab'[False]
'a'
当没有引入条件表达式时,这个东西在旧版本的Python中很有用:
>>> a = 'aa'
>>> b = 'bb'
>>> [10, 20][a>b]
10
>>> 20 if a > b else 10
10
相关:
答案 1 :(得分:3)
这种语法适用于常规Python和numpy,但它在每个地方都有不同的功能。
使用常规Python数字和容器,执行sequence[a < b]
首先评估a < b
并获得boolan值(True
或False
)。布尔值是Python中整数的子类,因此它们可以接受像列表和元组这样的序列的索引。您有时会将[1, -1][a < b]
之类的代码视为条件表达式-1 if a < b else 1
的简写。
在numpy代码中,事情有点复杂。如果您的a
和/或b
值是一个numpy数组,那么表达式a < b
将是一个具有适当尺寸的布尔数组。然后该数组可以用作另一个numpy数组的索引。因此,例如,您可以使用a
在numpy数组a[a>10]
中提取大于10的值。这是您在链接到的另一个问题中使用的那种逻辑。
答案 2 :(得分:1)
它们是逻辑计算。如果语句为True则返回1,如果为False则返回0。
答案 3 :(得分:0)
请将<
视为“小于”。 “零小于五”是真的。在python中,与许多语言一样,True等于1.列表中的第1项是2。
同样,因为零不大于3,而列表中的第0项为1,ex[0>5]
会给出值1
。