Копирование элементов списка. Условие

Главная Форумы Задать вопрос Копирование элементов списка. Условие

В этой теме 5 ответов, 3 участника, последнее обновление  Анатолий 1 месяц, 1 неделя назад.

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Автор
    Сообщения
  • #6925 Score: 0

    Анатолий
    Участник
    5 pts

    Друзья, возможно ли решить такую задачу?

    Есть два списка, допустим {“a”,”b”,”b”,”c”,”d”,”d”,”d”,”e”,”e”,”f”} и {“k”,”l”,”m”,”n”,”o”,”p”}. (в задаче количество элементов второго списка будет равняться количеству уникальных элементов первого).

    Необходимо, чтобы второй список (или третий измененный) приобрел такие очертания {“k”,”l”,”l”,”m”,”n”,”n”,”n”,”o”,”o”,”p”}.

    Спасибо!

    #6927 Score: 1

    Legantmar
    Хранитель
    369 pts

    in1 = [‘a’,’b’,’b’,’c’,’d’,’d’,’d’,’e’,’e’,’f’]
    in2 = [‘k’,’l’,’m’,’n’,’o’,’p’]
    OUT = [in2[i] for i,k in enumerate(sorted(set(in1))) for p in in1 if k ==p]
    >>[‘k’, ‘l’, ‘l’, ‘m’, ‘n’, ‘n’, ‘n’, ‘o’, ‘o’, ‘p’]

    p.s. Применение set создает из исходного списка набор уникальных элементов, но выстраиваются  они в хаотичном порядке, поэтому добавил sorted (для сортировки по алфавиту). Не уверен, что для твоей финальной задачи это будет правильно работать.

    #6928 Score: 0

    Анатолий
    Участник
    5 pts

    Огромное спасибо, Антон! Просто выручил!!! Все работает)) А задачу подкорректируем под этот вариант, мне в принципе не столь важно в каком порядке изначально идет второй список. Спасибо!)

    #6930 Score: 0

    Анатолий
    Участник
    5 pts

    К сожалению, Антон, ты оказался прав.. Поспешил я сделать выводы, разобравшись и подумав, решения пока не вижу, если на пальцах объяснять: не получается работать с отсортированным первым списком {“a”,”b”,”b”,”c”,”d”,”d”,”d”,”e”,”e”,”f”}, в жизни он обычно такого вида {“b”,”c”,”d”,”e”,”d”,”a”,”d”,”e”,”b”,”f”} и потому нужно чтобы: 1 вариант) или второй список дублировал элементы в строгом соответствии первому [‘l’, ‘m’, ‘n’, ‘o, ‘n’, ‘k’, ‘n’, ‘o’, ‘l’, ‘p’] или 2 вариант) иметь возможность отсортировать потом новосозданный список [‘k’, ‘l’, ‘l’, ‘m’, ‘n’, ‘n’, ‘n’, ‘o’, ‘o’, ‘p’] вместе с первым списком {“a”,”b”,”b”,”c”,”d”,”d”,”d”,”e”,”e”,”f”} в порядок до сортировки первого списка (перед этим). Нюанс также заключается в том, что у меня на второй список подаются типы семейств, потому не смогу соединять списки..

    #6931 Score: 1

    amilane
    Участник
    1 pt

    Тут, наверное, не самый рациональный подход… особенно, если элементов в списках будет много

    #6932 Score: 0

    Анатолий
    Участник
    5 pts

    Большое спасибо, amilane, за труды! У вас удалось стандартными нодами сделать то же, что и ранее Legantmar сделал в питоне. Но задачу решить не удалось, к сожалению, потому что нужно еще привести выходной список в соответствие первому неотсортированному списку.. Но идея отличная, посижу, вечером, подумаю, может на основе этого порядка нодов что-то придет в голову)

    И все-таки, это выход!! Если убрать первый нод sort.list, все работает корректно!!! Еще раз огромное спасибо!)

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)

Для ответа в этой теме необходимо авторизоваться.