Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相等大小列表python_Python_List_For Loop_Compare - Fatal编程技术网

相等大小列表python

相等大小列表python,python,list,for-loop,compare,Python,List,For Loop,Compare,嗨,伙计们,我想知道如何比较上一个数字和当前的数字,直到最后一个数字 名单如下: [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

嗨,伙计们,我想知道如何比较上一个数字和当前的数字,直到最后一个数字

名单如下:

[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)
上次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 ``

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

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
来找到解决方案。

最后一个元素将是一个边缘情况,因为它之后没有任何东西可以与之相比。请您使用更精确的解决方案,好吗?我不太确定您的算法需要什么。如果最后一个元素大于之前的元素,是否要打印“prev greater”或其他内容?如果是这样,只需在for循环的末尾添加一个额外的If语句即可。在每次迭代中,它应该检查当前数是否大于上一次。问题是,最后一个数字(7)比前一个数字(6)大,如果我以这种方式添加该条件(如果prevdef 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]