查找列表中数字后跟较大数字的次数

时间:2018-11-13 03:43:20

标签: python python-3.7

我具有此功能来查找列表中数字后跟较大数字的次数。还有另一种“ pythonic”的方式可以做到吗?我正在使用Python 3.7.0。

先谢谢了。

def find_greater_numbers(arr):
    count = 0
    i = 0
    j = 1
    while i < len(arr):
        while j < len(arr):
            if arr[j] > arr[i]:
                count += 1
            j+=1
        j = i+1
        i+=1
    return count

find_greater_numbers([6,1,2,7]]) # returns 4

2 个答案:

答案 0 :(得分:5)

目前尚不清楚,您是要立即关注,还是在以后的索引中关注

在第一种情况下,此衬纸:

sum(x < y for x,y in zip(arr[:-1],arr[1:])) # answer is 2

在第二个中,这个:

sum(any(x < y for y in arr[i:]) for i,x in enumerate(arr)) # answer is 3

如果您要计算精确的此类对的数量(例如您的实际代码似乎正在做的事情):

sum(x < y for i,x in enumerate(arr) for y in arr[i:]) # answer is 4

答案 1 :(得分:0)

根据映射条件(如果x

import itertools

arr = [6, 1, 2, 7]
num = len(list(itertools.chain.from_iterable(list(filter(lambda x: x , map(lambda x, y: x<y, arr[:-i], arr[i:]))) for i, x in enumerate(arr))))
print(num)