LINUX.ORG.RU

Python. Как сортировать по вложенным спискам?

 , ,


0

2

Первый вопрос:

a_list = [[8, [3,4]], [3, [8,9]], [5, [5,6]]]

lst_sorted = sorted(a_list, key=lambda x: x)
print(lst_sorted)   # out: [[3, [8, 9]], [5, [5, 6]], [8, [3, 4]]]

# а как сортировать по вложенным спискам?, чтобы было:
# out: [[8, [3,4]], [5, [5,6]], [3, [8,9]]]

Второй вопрос:

#нашел пример на просторах стековерфлоу, не пойму, каким должен быть a_list, чтобы это работало?
def lambda_maker():
    def generator():
        value = None
        while 1:
            value = yield value
            value = value[0][1]
    f = generator()
    next(f)  # skip the first None
    return f.send  # a handy lambda value: value[0][1]


a_list.sort(key=lambda a: a[0][1])
a_list.sort(key=lambda_maker())
★★★

Последнее исправление: serg002 (всего исправлений: 1)

как сортировать по вложенным спискам?

Расскажите мне, что делает функция sorted(), а именно зачем мы пишем lambda x:x, всмысле что попадает в этот x и как этот x изменить на то, по чему нам надо сортировать.

А я пока пойду заварю воду.

нашел пример на просторах стековерфлоу

Фу, бросьте каку. Есть же официальные доки https://docs.python.org/3/

mydibyje ★★★
()
Последнее исправление: mydibyje (всего исправлений: 1)
Ответ на: комментарий от t184256

Программирую на python >5 лет.

ну в целом нормально, если начал с питона в школьные годы, то как раз через 3-5 лет начинаешь формировать теоретический фундамент, структуры, алгоритмы, организацию данных и кода и т.д.

С моей первой программы – bat-файл, которым я порушил винду прошло примерно 3 года до момента когда я начал создавать классы в Borland C++, соотв. с 6 по 9 класс. Хотя в этом промежутке я и акраноид свой писал и резидентые программы под dos и пр.

soomrack ★★★★
()
Последнее исправление: soomrack (всего исправлений: 1)
Ответ на: комментарий от t184256

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

usi_svobodi
()
Ответ на: комментарий от soomrack

В общем случае это действительно не смешно, но мы в треде @serg002, снискавшего народную любовь темами навроде:

Про джуниоров в последний раз

Про junior.Информация к размышлению

Бесплатный суппорт новорегов

t184256 ★★★★★
()
Ответ на: комментарий от t184256

Ну а чего? Повезло, влился в IT на пике, хорошая зп, может смотреть на офисный планктон свысока, но постепенно взрослеет и понимает, что как бы его успех это удача, а не профессионализм, и надо прокачиваться, чтобы сохранять достижения… Многие этого никогда не понимают, и потом обижены на все вокруг, когда мир меняется и их код заменяют шаблонами, автоматизацией, нейронками и пр. Так было с верстальщиками, с PHP прогерами, с кучей других профессий, которые были очень востребованы по причине того, что нужно прямо сейчас и было выгодно даже за дорого посадить кучу обезьян и чтобы они делали пару простых действий.

А так то да, это весьма забавно, особенно учитывая сложность вопроса, где всего-то нужно указать правило сортировки (свою функцию задать) как параметр sort, а впрочем, из вопроса я все равно не понял чего ему нужно.

soomrack ★★★★
()
Ответ на: комментарий от usi_svobodi

Cпасибо, да. Голова вчера уже не работала. На простые вопросы ты гаразд отвечать, да. Вангую, что со вторым вопросом не всё так просто, только тсс

serg002 ★★★
() автор топика
Последнее исправление: serg002 (всего исправлений: 1)
Ответ на: комментарий от usi_svobodi

Второе это вообще шикарный пример фееричного питоновского синтаксиса. Не тот язык brainfuck назвали… Впрочем для lesbianlinux (http://www.lesbian.mine.nu/) он отлично подходит.

Я правильно понимаю, что там делается тоже сортировка, по вложенному массиву, но этот вложенный массив теперь стоит на первом месте?

soomrack ★★★★
()
Ответ на: комментарий от usi_svobodi

А есть предположения, зачем вот это вот все: генератор, отложенное исполнение? Почему просто не написать a_list.sort(key=lambda x: x[0][1])?

Там что ли, как Маяковскому, за количество строчек платят?

soomrack ★★★★
()
Последнее исправление: soomrack (всего исправлений: 1)
Ответ на: комментарий от phoenix

Я сделаю его еще блевотней!

def lvalue():
    def ivalue():
        value = None
        while 1:
            value = yield value
            value = value[0][1]
    value = ivalue()
    next(value)  # skip the first None
    return value.send  # a handy lambda value: value[0][1]


a_list.sort(key=lambda value: value[0][1])
a_list.sort(key=lvalue())

soomrack ★★★★
()

На Хабре недавно была байка про двух сеньоров, которые подбирали для себя команды джунов. Почитай про это. Тебе нужно выбирать второй вариант из той байки (в роли джуна, конечно).

Mirage1_
()