【问题标题】:Checking to see if a list is sorted检查列表是否已排序
【发布时间】:2018-03-04 09:30:30
【问题描述】:

我已经尝试过 sorted、value_sort、all(a, b...zip) 等,但我检查列表是否已排序的函数“is_solved”将不起作用。该函数应检查弹珠列表是否按升序排序。我已经评论了我尝试过但没有奏效的其他方法。非常感激任何的帮助。

    def is_solved(self, list_of_marbles, i):
#returns true if the game is solved
        if self.list_of_marbles[i] < self.list_of_marbles[i+1]:   
        #all(self.list_of_marbles[i] <= self.list_of_marbles[i+1] for i 
        #in range(len(self.list_of_marbles)-1))
    #if self.is_solved(board2, i) == True:
    #if self.list_of_marbles[i] < self.list_of_marbles[i+1]:    
        return True
        else: 
            return False

【问题讨论】:

  • 另外,i 方法中的 is_solved 是未定义的。
  • 我已更新为“is_solved”。我收到一个我未定义的错误。我该如何解决这个问题?我尝试了帖子中的方法,“pythonic way to check if a list is sorted or not”,但也无法让它们工作。
  • 为什么要在函数内部定义i?你没有在那里定义它,也没有从你调用函数的地方传递它。天真的修复是def is_solved(self, list_of_marbles, i):if self.is_solved(board2, i) == True:,但我无法判断算法是对还是错。
  • 你能解释一下算法是怎么出错的吗?

标签: python list sorting undefined


【解决方案1】:
def check(list):
    if (list == sorted(list)):
        return True
    else:
        return False

li = [1,2,3,4,5]
check(li)

如果list == sorted(list) 表示输入的列表已经排序

【讨论】:

    【解决方案2】:
    def Sort(x):
    L=sorted(x)
    if x==L:
        return x
    else:
        i=0
        for i in range (len(x)):
            if x[i] > x[i+1] :
                break
    
        unsortedPart = x[i:]
        R = RecursiveMin(unsortedPart)
        I = unsortedPart.index(R)
    
        for j in range (len(x)):
            if x[j] > R :
                del x[(I+i)]
                x.insert(j,R)
                break
    
        return Sort(x)
    

    这是在python中使用递归对列表进行升序排序的代码。 但是,如果您正在寻找的是对正在排序的列表的真/假答案,那么您就不需要了。

    def checkSorted(list):
       L = sorted(list)
       if list == L:
          return True
       else:
          return False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 2011-04-14
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2017-11-20
      • 2012-04-08
      相关资源
      最近更新 更多