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

1 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
Run Code Online (Sandbox Code Playgroud)

Jul*_*ien 5

如果您的意思是立即跟随,或者在任何后来的索引中跟随,那么有点不清楚

在第一种情况下,这一个班轮:

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

在第二个,这一个:

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

如果你想计算确切数量对的数量(就像你的实际代码似乎在做什么):

sum(x < y for i,x in enumerate(arr) for y in arr[i:]) # answer is 4
Run Code Online (Sandbox Code Playgroud)