我有这个函数来查找一个数字在列表中跟一个更大的数字的次数.还有另外一种"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)
如果您的意思是立即跟随,或者在任何后来的索引中跟随,那么有点不清楚
在第一种情况下,这一个班轮:
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)
| 归档时间: |
|
| 查看次数: |
52 次 |
| 最近记录: |