Сравнение списков с условными утверждениями

Я попытался выполнить упражнение, в котором он хочет, чтобы я возвратил True, если список отсортирован в порядке возрастания, и вернул False в противном случае. List1 должен возвращать True, а List2 должен возвращать False.

Я попытался создать новую переменную с именем sort, чтобы использовать метод sort, чтобы упорядочить его и сравнить с немодифицированным списком, и с помощью цикла for проверить, соответствуют ли элементы в отсортированном списке и неизмененном списке друг другу в том же порядке. Я не слишком уверен, как правильно решить эту проблему, поскольку я получаю Ложные возвращения для обоих.

def is_sorted(t): sort = t.sort() for element in t: if t == sort: return True else: return False def main(): list1 = [1,2,2] print(is_sorted(list1)) list2 = ['b', 'a'] print(is_sorted(list2)) main() 

Всего 1 ответ


list.sort сортирует список на месте и возвращает None . Из документов: https://docs.python.org/3/tutorial/datastructures.html.

list.sort (ключ = Нет, обратный = Ложь)
Сортировать элементы списка на месте

Вы хотите использовать отсортированный вместо этого, который возвращает отсортированный список

отсортировано (итеративно, *, ключ = нет, реверс = ложь)
Вернуть новый отсортированный список из элементов в итерируемых.

Также вы можете просто сравнить список вместо сравнения каждого элемента

def is_sorted(t):
    #Sort the list and check if it the same as the original list
    return sorted(t) == t

Выход будет

print(is_sorted([1,2,2]))
#True
print(is_sorted(['b', 'a']))
#False

Есть идеи?

10000