2017-01-13 3 views
2

Есть ли простой способ сортировки списка в списке, чтобы значения менялись от наименьшего к наибольшему или наоборот? До сих пор я могу найти информацию только о том, как упорядочить списки, основываясь на главном значении.Список заказов в списке

Вот пример:

data = [[8,7], [10,5,], [8,10]] 

>> [[7,8], [5,10], [8,10] 
+8

FYI: Это 'список()' s, которые используют квадратные скобки, а не 'tuple()' s, которые используют круглые скобки. –

ответ

6

Что у вас есть список списков, не кортежи, участвующих здесь, Вы можете также сделать это с помощью комбинации встроенных методов map и sorted:

>>> data = [[8,7], [10,5,], [8,10]] 
>>> 
>>> list(map(sorted, data)) 
[[7, 8], [5, 10], [8, 10]] 

в Python3, map возвращает итератор, поэтому, если вам это нужно, как список, вам нужно преобразовать его обратно с list, в противном случае, если вы используете его в петля t не нужно переводить его в список. Это экономит память таким образом.

Edit:

Ответ на ваш комментарий, вы можете сделать что-то вроде:

>>> def f(lst): 
     lst = sorted(lst) 
     return(lst[0], lst) 

>>> print(*map(f, data)) 
(7, [7, 8]) (5, [5, 10]) (8, [8, 10]) 

Или более компактный, но менее читабельный:

>>> print(*map(lambda lst: '{} - {}'.format(lst[0], lst), map(sorted, data)), sep='\n') 
7 - [7, 8] 
5 - [5, 10] 
8 - [8, 10] 
+0

Есть ли функция, которую я могу использовать для печати ведущей переменной befor number pair? то есть. [7,8] как 7, [7,8]. Функция, которую я пытался использовать, печатает ее как список отсортированных пар, а затем ведущих переменных. – alienmode

+0

@AaronSmith, проверьте обновленный ответ. –

+0

Рад быть полезной для вас, подумайте о том, чтобы принять тот, который, по вашему мнению, помог вам в вашей проблеме. –

10

Используйте список понимание для сортировки каждого элемента (каждый list объект) в data:

data = [sorted(x) for x in data] 

data теперь:

[[7, 8], [5, 10], [8, 10]] 

Вы также можете сделать это:

map(sorted, data) 

Затем используйте list на этом map объект на самом деле превратить его в список ...

1

это зависит, если вы хотите заказать их на месте или вы хотите получить новую копию со списком

для новой копии, th е другой ответ уже показать вам, как, например

data = [[8,7], [10,5], [8,10]] 
new = [ sorted(elem) for elem in data ] 
print(new) 

для заказа их на месте использовать для цикла и вызвать .sort на них

data = [[8,7], [10,5], [8,10]] 
for elem in data: 
    elem.sort() 
print(data) 
Смежные вопросы