Возможно в начальном списке перед : есть пробел,этот пробел и создаёт пустой список.
От пустых списков можно избавиться List.Clea подать false на нижний слот.
У Вас в предыдущем ноде в каждом списке есть по индексу 0 значение 0, в индексе 1 есть значение.List.Transport транспонирует(переворачивает) список. Все индексы [0] прилетают в первый список,все [1]во второй список.(если были бы индексы [2],то было бы три списка с [0] [1] [2]).То что было строками стало столбцами-это если грубо по аналогии с exsel.
Сделай два списка в 2-х codeblock “A”..”D” и “a”..”d” сложи в один список и транспонируй -увидишь механизм.
Добрый день!
Товарищи, будьте добры помогите разобраться.
По результатам расчета получен список с значениями:
A=[3,4,3,5,1,2,1]
Список B получен в результате сортировки списка A:
B=[5,4,3,3,2,1,1]
Как можно получить индексы списка A по результатам списка B т.е. C=[3,1,0,2,5,4,6].
Использование нода List.AllIndicesOf в данном случае не подходит т.к. есть одинаковые значения в списке. Возможно я в не правильном направлении и решение через скрипт Python?!
Но боюсь что задача, которую ты хочешь решить в итоге является более сложной чем обработка двухуровневого списка с преобразованием списков второго уровня из двухэлементных в трёхэлементные, так что скорее всего моя подсказка не сильно поможет тебе продвинуться в твоих изысканиях.
Коллеги, недавно начал изучать Dynamo, пока ориентируюсь плохо.
Помогите в изменении скрипта открывания дверей. Скрипт не учитывает открывания дверей в витражах. Данные теряются после фильтра “List.FilterByBoolMask” чем его заменить не знаю ((
Сам скрип удобный за исключением игнорирования дверей в витражах.
Расшифровываю
1. elSys = board.MEPModel.ElectricalSystems
получаем сэт (это не совсем список), всех систем.
На выход OUT для работы методами Динамо надо подать список.
OUT = list(elSys)
2. У каждой системы в сэте есть свойство PanelName. Чтобы получить имя щита, к которому подключены все системы, надо применить PanelName к каждой системе через цикл поочередно.
Мне лень пользоваться циклами. Я сделал все то же самое через генератор списков.
Например, для получения списка с PanelName я воспользуюсь таким генератором
nameList = [sys.PanelName for sys in elSys]
3. В генератор списков я могу записать условие такое, какое мне надо.
Пример с условием я написал в своём предыдущем коде.
import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
#Введенные в этом узле данные сохраняется в виде списка в переменных IN.
dataEnteringNode = IN
#Назначьте вывод переменной OUT.
OUT = 0
Выдает ошибку:
Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
Traceback (most recent call last):
File “<string>”, line 2, in <module>
IOError: System.IO.IOException: Could not add reference to assembly ProtoGeometry
в IronPython.Runtime.ClrModule.AddReference(CodeContext context, String name)
в IronPython.Runtime.ClrModule.AddReference(CodeContext context, Object[] references)
в Microsoft.Scripting.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 arg0, T1 arg1, T2 arg2, T3 arg3)
в System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
в Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
в IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
в Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope)
в DSIronPython.IronPythonEvaluator.EvaluateIronPythonScript(String code, IList bindingNames, IList bindingValues)
#Created by DPS Design, dpsdesign.org
import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
Ошибка по строке 3:
Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
Traceback (most recent call last):
File “<string>”, line 3, in <module>
IOError: System.IO.IOException: Could not add reference to assembly ProtoGeometry
в IronPython.Runtime.ClrModule.AddReference(CodeContext context, String name)
в IronPython.Runtime.ClrModule.AddReference(CodeContext context, Object[] references)
в Microsoft.Scripting.Interpreter.ActionCallInstruction`2.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.LightLambda.Run4[T0,T1,T2,T3,TRet](T0 arg0, T1 arg1, T2 arg2, T3 arg3)
в System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
в Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
в Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
в IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
в Microsoft.Scripting.Hosting.ScriptSource.Execute(ScriptScope scope)
в DSIronPython.IronPythonEvaluator.EvaluateIronPythonScript(String code, IList bindingNames, IList bindingValues)
В принципе, ИваСерж дал расширенный ответ о выводе данных списком, немного уточню по вашему коду скрипта питона 2.7. Чтобы ответ выглядел в виде списка, в вашем коде необходимо прописать:
list = []
for x in a:
x = x*2
list.append(x)
OUT = list
В одну строку как вам отвечали, это будет list=[x*2 for x in a]
Текст ошибки, по всей видимости не может обработать поданный список.
Предупреждение:IronPythonEvaluator.EvaluateIronPythonScript операция не выполнена.
Traceback (most recent call last):
File “<string>”, line 32, in <module>
TypeError: expected FamilySymbol, got List[object]