如果列表列表中的每个元素都大于其neigbbour,那么计算最“pythonic”的方法是什么?例如
a = [[3.1, 3.13], [3.14, 3.12], [3.12, 3.1]]
我想看看每个列表中的第一个元素(在较大列表中)是否大于第二个元素。所以对于第一项,它的错误是因为3.1< 3.13。第2和第3项是真的。
我当然可以使用for循环,但希望看到其他方法。感谢。
答案 0 :(得分:8)
模式匹配和列表理解:
[x > y for x, y in a]
答案 1 :(得分:4)
这将返回一个布尔值列表:
[x[0] > x[1] for x in a]
如果你想要返回True,如果所有值都是True,否则返回False:
all([x[0] > x[1] for x in a])
答案 2 :(得分: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]