簡體   English   中英

等於小於和大於列表python

[英]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')

最后一個alg的結果:

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找到解決方案的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM