2015-07-21 3 views
-3

Предположим, что у меня есть этот список:Python Сортировка Список Список

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 

Это не работает, хотя. Может кто-нибудь, пожалуйста, помогите мне? Встроенная функция не допускается.

+1

Почему не встроенные функции разрешены? –

+0

Попробуйте прочитать об алгоритмах сортировки. – raymelfrancisco

+3

Мне бы очень хотелось просто реализовать [mergesort] (https://en.wikipedia.org/wiki/Merge_sort) и затем сделать что-то вроде 'newlis = [mergesort (i) для i в newlis]' – NightShadeQueen

ответ

2

Здесь много чего не так (среди них, что это звучит как вопрос о домашнем задании, и мы не должны отвечать на них), но я дам вам полезный совет: Вы сравниваете элемент J в списке I в список I + 1.

вы хотели бы сравнить элемент J в списке I к элементу J + 1 в список I.

Кроме того, вы, кажется, пытается разобраться в обратном направлении. Вы получите большие левые и малые права.

Также это не алгоритм сортировки. Что произойдет, если у вас есть массив, такой как

[3,6,4,10] => [6,4,10,3] 

, который до сих пор не заказан. Алгоритмы сортировки просты, но не так просто. Я рекомендую посмотреть их.

+0

Кроме того, проверьте свой синтаксис, вы попытались сократить этот внутренний цикл, но j в списке i ничего не возвращает. Правильный синтаксис будет 'for j в диапазоне (len (i) - 1): if i [j] Javeed

0

В if j in newlis[i] < newlis[i+1]: вы сравниваете подсписки, а не элементы самих подсписков. Вам нужны две петли, одна для итерации на newlis и одна для сортировки элементов каждого подсети newlis.

образец с использованием Bubble Sort:

You can test it here:

>>> 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]] 

Ссылки о Bubble Сортировка:

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/

Смежные вопросы