我具有此功能来查找列表中数字后跟较大数字的次数。还有另一种“ 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
答案 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)