请解释(python):example_list [a< b]

时间:2014-04-25 21:17:32

标签: python list comparison-operators

我正在阅读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

4 个答案:

答案 0 :(得分:3)

<将返回TrueFalse,并且它们在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值(TrueFalse)。布尔值是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