2016-11-09 6 views
-1

Посмотрев на документацию Python 3, я хотел бы, чтобы попытаться что-то подобноеСвоп вложен список Python 3

nested_list = [ 
(1,4,7,10), 
(2,5,8,11), 
(3,6,9,12), 
] 
sorted(nested_list, key=lambda nes: nes[0]) 

print(nested_list) 

Я хотел бы список для вывода как:

[(2, 5, 8, 11), (1, 4, 7, 10), (3, 6, 9, 12)] 

Но вместо этого он выводит, как :

[(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)] 

Какой то же!

Я использую Python 3.5.1 кстати.

+0

Ну да, вы отсортировали список по первому элементу. И это правильный порядок. Как следует заказывать списки? –

+0

Каковы критерии заказа для желаемого результата? 'sorted' делает именно это, сортируя. –

+0

Что было так трудно понять? TallChuck понял это –

ответ

0

Аргумент «ключ» принимает функцию, и эта функция передается каждому элементу массива в качестве аргумента, через который он выполняет итерацию. Линия

sorted(nested_list, key=lambda nes: nes[0]) 

смотрит на каждый кортеже в nested_list, присваивает его nes и сортирует его nes[0]. Если вы хотите отсортировать его на основе чего-то еще, скажем, последний индекс каждого массива, вы бы изменить его

sorted(nested_list, key=lambda nes: nes[-1]) 

Если все, что вам нужно сделать, это своп первых два кортежей nested_list, я предложил бы просто

nested_list[0], nested_list[1] = nested_list[1], nested_list[0] 
+0

Спасибо за это! Это сработало!!! Оказывается, я просто хотел поменять первые два кортежа haha ​​ –

+0

, если я попробую его со строками, это не сработает, я получаю ошибку типа? –

+0

какую команду вы использовали? – TallChuck

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