Получение одинаковых элементов многоуровневого списка

Главная Форумы Задать вопрос Получение одинаковых элементов многоуровневого списка

В этой теме 4 ответа, 4 участника, последнее обновление  anchim678 3 мес., 4 нед. назад.

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

    anchim678
    Участник

    Здравствуйте. Имеется многоуровневый список (рисунок 1), как получить на выходе все повторяющиеся элементы? Для одноуровневого списка это сделать несложно, а вот с многоуровневым возникли проблемы. Должно быть как на рисунке 2. Перепробовал кучу способов, но все утыкается в уровни, не до конца понимаю как с ними работать.

    Рисунок 1.

    Рисунок 2

     

    #7698 Score: 0

    Иван
    Участник
    4 pts

    Добрый день.

    Через ноды динамо это, наверняка, можно сделать. Но первым в голову пришло решение на питоне:

    list = IN[0]
    res = []
    
    for i in range(len(list)):
        if list[i] in list[i + 1:] or list[i] in res:
            res.append(list[i])
    
    # Назначьте вывод переменной OUT.
    OUT = res

    Единственное, что сортировка не такая, как в примере.

    #7699 Score: 0

    txt
    Модератор
    90 pts

    Несколько примеров тут:

    Tips and tricks (Советы и приемы)


    2-х уровневый можно так :
    https://pastebin.com/zAGkCWeP

    #7702 Score: 0

    ИваСерж
    Модератор
    88 pts

    Все смотрю на эту задачу и не понимаю условия….
    Все ещё актуально ?Если задача ещё актуальна, могу набросать код.
    Если задание “получить на выходе все повторяющиеся элементы”, то ответ был бы 2,5,9. Т.е. конечным элементом должен быть не список, а цифра в списке. Так ли это?
    Тогда для меня нет проблем в поиске любых элементов и их сравнения в списках любой глубины и сложности. Задачу предлагаю решать через map и рекурсии. Ещё вариант – из списка любой сложности сделать одноуровневый массив и уже в нем искать соответствия.

    #7703 Score: 0

    anchim678
    Участник
    list = IN[0]
    res = []
    
    for i in range(len(list)):
        if list[i] in list[i + 1:] or list[i] in res:
            res.append(list[i])
    
    # Назначьте вывод переменной OUT.
    OUT = res
    
    Этот вариант хорошо сработал , спасибо всем.
Просмотр 5 сообщений - с 1 по 5 (из 5 всего)

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