【问题标题】:How do I find the highest value and swap it with the end value in an array?如何找到最高值并将其与数组中的最终值交换?
【发布时间】:2016-06-04 00:57:53
【问题描述】:

到目前为止,这是我的 python 代码,最后得到的结果是 [5, 2, 3, 12, 1, 12]。

array = [5,2,3,12,1,6]
temp = ''
lastvalue = 5
highestvalue = array[0]

i=0



while i<5:

    if array[i]>highestvalue:
        highestvalue = array[i]


    i+=1

print(highestvalue)
temp = array[5]
array[5] = highestvalue
highestvalue = temp



print(array)

我正在寻找结果 [5,2,3,6,1,12] .

【问题讨论】:

    标签: python arrays python-3.x


    【解决方案1】:

    temp 是一个单独的变量,而不是数组元素。相反,确定所需的位置,并与之交换。我假设您正在“艰难地”做作业(没有 minma​​x 方法)?

    array = [5,2,3,12,1,6]
    highest_pos = 0
    i=0
    
    for i in range(len(array)):
        if array[i] > array[highest_pos]:
            highest_pos = i
        i+=1
    
    print(array[highest_pos])
    temp = array[-1]
    array[-1] = array[highest_pos]
    array[highest_pos] = temp
    
    print(array)
    

    另请注意,我已将您的 5 引用更改为使用列表长度或最终元素 -1。负数从相反(右)端索引列表。

    【讨论】:

    • 谢谢,但是array[-1]是什么意思?
    • @HarrisonCroaker 获取列表的最后一个元素
    • @HarrisonCroaker:请参阅我回答中的最后一句话。另外,我删除了两个初始化语句:highestvalue 不再使用,temp 在第一个 print 语句的下方被初始化。
    • @Keatinge 啊,是的,我明白了
    【解决方案2】:

    为什么不只是获取索引并交换值

    array = [5,2,3,12,1,6]
    
    maxI = array.index(max(array))
    minI = array.index(min(array))
    
    array[maxI], array[minI] = array[minI], array[maxI]
    

    【讨论】:

      【解决方案3】:

      我对您的代码进行了两项修改:(1)您需要在 for 循环中存储数组中最大值的索引(2)您需要更改交换数组中最后一个值和最大值的方法在代码的最后一部分。

      array = [5,2,3,12,1,6]
      temp = ''
      lastvalue = 5
      highestvalue = array[0]
      
      i=0
      
      
      
      while i<5:
      
          if array[i]>highestvalue:
              highestvalue = array[i]
              index = i # store the index of the highest value
      
      
          i+=1
      
      print(highestvalue)
      temp = array[5]
      array[5] = highestvalue
      array[index] = temp # correct way to swap the highest value to the end value of your array
      
      
      
      print(array)
      

      【讨论】:

        猜你喜欢
        • 2019-05-27
        • 2014-07-25
        • 2018-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-27
        • 2018-07-29
        • 1970-01-01
        相关资源
        最近更新 更多