Как красиво отсортировать список в Python?

Задача:
Есть список из пар элементов:
compound_transpositions = [[2, 3], [3, 4], [4, 5], [5, 6]]
Есть коэффициенты линейной функции:
coefficients = [17, 69, 84, 3, 46, 97, 12, 68, 70, 10]
Нужно отсортировать compound_transpositions по возрастанию разности соответствующих коэффициентов линейной функции.

Сами разности получить удалось, вот например:
keys = map(lambda x: T.coefficients[x[0]]-T.coefficients[x[1]], p.compound_transpositions())
>>>[81, -43, -51, 85]
То есть первой паре [2, 3] соответствует разность второго и третьего коэффициента функции: 84-3=81. И так далее.
Вопрос: как теперь это объединить. Главное: задача проста и понятно как это сделать алгоритмически. Но интересует не просто решение, а красивое решение. В стиле питона, одной строчкой.
Тру мэдскиллз хакеры, подскажите пожалуйста. Заранее спасибо!
  • Вопрос задан
  • 614 просмотров
Решения вопроса 1
>>> compound_transpositions = [[2, 3], [3, 4], [4, 5], [5, 6]]
>>> coefficients = [17, 69, 84, 3, 46, 97, 12, 68, 70, 10]
>>> compound_transpositions.sort(key=lambda x: coefficients[x[0]]-coefficients[x[1]])
>>> compound_transpositions
[[4, 5], [3, 4], [2, 3], [5, 6]]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
JRazor
@JRazor
Senior StarkOverFlow Programmer
С чего вы взяли, что стиль Python - это одна строчка? Python'исты наоборот не любят такие строчки.

import this

  • Красивое лучше, чем уродливое.
  • Явное лучше, чем неявное.
  • Простое лучше, чем сложное.
  • Сложное лучше, чем запутанное.
  • Плоское лучше, чем вложенное.
  • Разреженное лучше, чем плотное.
  • Читаемость имеет значение.
  • Особые случаи не настолько особые, чтобы нарушать правила.
  • При этом практичность важнее безупречности.
  • Ошибки никогда не должны замалчиваться.
  • Если не замалчиваются явно.
  • Встретив двусмысленность, отбрось искушение угадать.
  • Должен существовать один — и, желательно, только один — очевидный способ сделать это.
  • Хотя он поначалу может быть и не очевиден, если вы не голландец[9].
  • Сейчас лучше, чем никогда.
  • Хотя никогда зачастую лучше, чем прямо сейчас.
  • Если реализацию сложно объяснить — идея плоха.
  • Если реализацию легко объяснить — идея, возможно, хороша.
  • Пространства имён — отличная штука! Будем делать их побольше!
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы