Предположим, у меня есть этот список:
newlis = [[3, 6, 4, 10], [1, 9, 2, 5], [0, 7, 8]]
Я хочу отсортировать его таким образом, чтобы каждый список был отсортирован. Например:
newlis = [[3, 4, 6, 10], [1, 2, 5, 9], [0, 7, 8]]
Я пытался написать этот код:
for i in range(len(newlis)):
if j in newlis[i] < newlis[i+1]:
newlis[i],newlis[i+1]=newlis[i+1],newlis[i]
print newlis
Однако это не работает. Может кто-нибудь, пожалуйста, помогите мне? Встроенные функции не допускаются.
2 ответа
Здесь много неправильных вещей (в том числе то, что это звучит как вопрос домашнего задания, и мы не должны на него отвечать), но я дам вам несколько полезных советов: вы сравниваете элемент J в списке I со списком I + 1. .
Вы хотели бы сравнить элемент J в списке I с элементом J + 1 в списке I.
Кроме того, вы, похоже, пытаетесь сортировать в обратном порядке. Вы получите большой левый и маленький правый.
Также это не алгоритм сортировки. Что происходит, когда у вас есть массив вроде
[3,6,4,10] => [6,4,10,3]
Который до сих пор не заказан, вообще. Алгоритмы сортировки просты, но не настолько. Я рекомендую поискать их.
for j in range(len(i) - 1): if i[j] < i[j+1]
.... но это не главное необходимое исправление.
В if j in newlis[i] < newlis[i+1]:
вы сравниваете подсписки, а не элементы самих подсписков. Вам нужны два цикла: один для итерации newlis
, а другой для сортировки элементов каждого подсписка newlis
.
Пример использования пузырьковой сортировки:
Вы можете проверить это здесь:
>>> newlis = [[3, 6, 4, 10], [1, 9, 2, 5], [0, 7, 8]]
>>> for sublist in newlis:
... for i in range(len(sublist) - 1):
... if sublist[i] > sublist[i + 1]:
... sublist[i], sublist[i + 1] = sublist[i + 1], sublist[i]
>>> print(newlis)
[[3, 4, 6, 10], [1, 2, 5, 9], [0, 7, 8]]
Ссылки о сортировке пузырьком:
http://www-ee.eng.hawaii.edu/~tep/EE160/Book/chap10/subsection2.1.2.2.html http://www.go4expert.com/articles/bubble-sort-algorithm-absolute-beginners-t27883/
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.
newlis = [mergesort(i) for i in newlis]