4

如果列表列表的每个元素都大于其邻居,那么最“pythonic”的计算方法是什么?例如

a = [[3.1, 3.13], [3.14, 3.12], [3.12, 3.1]] 

我想看看每个列表中的第一个元素(在更大的列表中)是否大于第二个元素。所以对于第一项,它是假的,因为 3.1 < 3.13。第 2 项和第 3 项为真。

我当然可以使用 for 循环,但希望看到替代方法。谢谢。

4

3 回答 3

8

模式匹配和列表理解:

[x > y for x, y in a]
于 2013-09-13T05:51:40.650 回答
4

这将返回一个布尔值列表:

[x[0] > x[1] for x in a]

如果要在所有值都为 True 时返回 True,否则返回 False:

all([x[0] > x[1] for x in a])
于 2013-09-13T05:50:56.100 回答
3
>>> from operator import ge
>>> from itertools import starmap
>>> a = [[3.1, 3.13], [3.14, 3.12], [3.12, 3.1]]
>>> list(starmap(ge, a))
[False, True, True]

或者如果您不想导入starmap

>>> map(ge, *zip(*a))
[False, True, True]
于 2013-09-13T05:53:03.060 回答