Equal Less and Greater List python



大家好,我正在想办法将上一个数字与当前数字进行比较,直到最后一位。

这是清单:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7]

在每个迭代序列中,我需要最高的数字(例如,在第一个序列中是10(。序列完成后,它再次开始从一开始计数(1、2、3、4等(,直到达到条件。

现在的问题是,直到最后一次迭代,我都能正确地得到结果,最大值应该在7(如你所见:1,2,3,4,5,6,7(中

但算法跳过了它。我尝试了zip函数,即使使用iter循环也有同样的问题。

产生相同结果的示例代码如下:


def printElements(arr, n): 
      
    # Traverse array from index 1 to n-2 
    # and check for the given condition 
    for i in range(1, n - 1, 1): 
        if (arr[i] > arr[i - 1] and 
            arr[i] > arr[i + 1]): 
            print(arr[i], end = " ") 
  
# Driver Code 
if __name__ == '__main__': 
    arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7]
    n = len(arr) 
  
    printElements(arr, n) 

print(count_shelf)
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7]
for prev, current in zip(arr, arr[1:]):
    print(prev,current)
    if prev > current:
        x = prev
        print(prev,'prev greater')
        print(current,'current')

最后一个代数的结果:

2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10
10 1
10 prev greater
1 current
1 2
2 3
3 4
4 5
5 6
6 1
6 prev greater
1 current
1 2
2 3
3 4
4 5
5 6
6 7
7 1
7 prev greater
1 current
1 2
2 3
3 1
3 prev greater
1 current
1 2
2 3
3 4
4 5
5 1
5 prev greater
1 current
1 2
2 3
3 4
4 1
4 prev greater
1 current
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 1
8 prev greater
1 current
1 2
2 3
3 4
4 5
5 6
6 7 ``
arr.append(float('-inf'))
def printElements(arr, n): 
      
    # Traverse array from index 1 to n-2 
    # and check for the given condition 
    for i in range(1, n - 1, 1): 
        if (arr[i] > arr[i - 1] and 
            arr[i] > arr[i + 1]): 
            print(arr[i], end = " ") 
  
# Driver Code 
if __name__ == '__main__': 
    arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7]
    arr.append(float('-inf'))
    n = len(arr) 
  
    printElements(arr, n) 

您可以使用列表理解来获得每个序列的最大值。

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7]
maxvals = [lst[x] for x in range(len(lst)) if x == len(lst)-1 or lst[x] > lst[x+1]]
print(maxvals)

输出

[10, 6, 7, 3, 5, 4, 8, 7]

我看不出有任何方法可以使用zip来找到解决方案。

最新更新