ReplaceItemAtIndex浅析
继上一次Dynamo按管道信息匹配管道类型中发现ReplaceItemAtIndex不能在列表多个索引处替代对应的值,这次就来找一下解决办法。
不能够如愿的将列表a变成[4,5,6,4,5],下面是三种方法来解决这个问题:
-
借助ClockWork节点包
此节点包中增强版的ReplaceItemAtIndex节点包RelaceItemAtIndex+能够很好解决此问题,上篇中已提及。
2.使用CodeBlock
这种方法比较简洁只需要把c赋值给a列表在b列表索引项的值即可。
这里有一个小细节值得注意,a=[1,2,3,4,5]和 a=[1..5]尽管看起来很像,实际并不是一码事。
可以发现前者是一个一维列表,而后者是二维列表,这是因为dynamo为a=[1..5]将要可能加入的元素预留了位置。
所以将a=[1,2,3,4,5]改成a=[1..5]的形式,上述功能并不能奏效:
3.使用PythonScript
一开始我写出了下面蹩脚的语句:
试图用for循环历遍列表中的每一项,软件提示我在第四行太多值没有打包
于是百度了一下Python打包函数是zip(),zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。就有了:
如愿的将列表变成了想要的样子。
—————————————————–(我是分割线)
此外,我还发现List.Insert也存在着类似的问题:
当然解决办法也是类似:
这样写看起来有点臃肿,不太符合python简洁优雅的气质,于是可以这样:
欢迎阅读,分享,后台回复交流,批评指正。
如转载请注明出处,否则追究法律责任(说说而已,全靠自觉)。