Перетасовать список (сортировать)

Главная Форумы Задать вопрос Перетасовать список (сортировать)

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

    Добрый день.

    Создаю марки для панелей витражей, хочу чтобы они пронумеровальсь снизу вверх. Сортирую их по оси Z. Естественно, т.к. панели витража через Dynamo выбираются в рандомном порядке, то координаты тоже сортируются не по возрастанию. Через List.Sort сортирую их по возрастанию и тут вопрос – как можно перетасовать исходный список панелей с ID в соответствии с новым списком.

    Кто знает – подскажите, научите.

    #7894 Score: 3
    ИваСерж
    Хранитель
    134 pts

    Могу только на питоне.
    В ИН0 – подаем список панелей
    В ИН1- подаем список координат.

    На выходе отсортированные панели.

    panelsList = IN[0]
    coordZlist = IN[1]

    ziped = zip(panelsList,coordZlist)
    ziped.sort(key=lambda x: x[1])
    outlist = [i[0] for i in ziped]

    OUT = outlist

    #7895 Score: 0
    Denver-22
    Участник
    6 pts

    Если в Динамо, попробуйте:
    – у координат Z сортируете индексы – SortIndexByValue (нод с одним Входом)
    – в нод List.GetItemAtIndex подаете список элементов, а индексы – от SortIndexByValue

    #7896 Score: 0
    Арсений
    Участник
    1 pt

    ИваСерж – спасибо, заработало как нужно.

    Denver-22 – я попробовал этот способ, почему-то индексы все-равно неправильно выставляет, как-будто в случайном порядке. Закономерность я не смог найти :)

    Благодарю за помощь!

     

    #8038 Score: 0
    Арсений
    Участник
    1 pt

    Скрипт по нумерации марок панелей витража снизу вверх – буду рад если кому пригодится.

    https://cloud.mail.ru/public/Hsif/xhRirzDuT

    Нод – Get.FamilyName из пакета BlackBox
    Нод – List.FilterByString из пакета SteamNodes

    #8044 Score: 0
    Ренат Я.
    Модератор
    79 pts

    отсортировать список можно нодом List.SortByKey 

    панели располагаются в 0 List

Просмотр 6 сообщений - с 1 по 6 (из 6 всего)
  • Для ответа в этой теме необходимо авторизоваться.