我有这个函数来查找列表中一个数字后跟一个较大数字的次数。是否有另一种更“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
请您参考如下方法:
有点不清楚你的意思是立即关注,还是在任何以后的索引处关注
在第一种情况下,这个衬里:
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
