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

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

В этой теме 3 ответа, 3 участника, последнее обновление  Арсений 6 дн., 20 час. назад.

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

    Арсений
    Участник
    1 pt

    Добрый день.

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

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

    #7894 Score: 2

    ИваСерж
    Модератор
    85 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
    Участник
    3 pts

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

    #7896 Score: 0

    Арсений
    Участник
    1 pt

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

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

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

     

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

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