ReplaceItemAtIndex浅析

       继上一次Dynamo按管道信息匹配管道类型中发现ReplaceItemAtIndex不能在列表多个索引处替代对应的值,这次就来找一下解决办法。

ReplaceItemAtIndex浅析插图

不能够如愿的将列表a变成[4,5,6,4,5],下面是三种方法来解决这个问题:

  1. 借助ClockWork节点包

此节点包中增强版的ReplaceItemAtIndex节点包RelaceItemAtIndex+能够很好解决此问题,上篇中已提及。

ReplaceItemAtIndex浅析插图1

    2.使用CodeBlock

ReplaceItemAtIndex浅析插图2

这种方法比较简洁只需要把c赋值给a列表在b列表索引项的值即可。

这里有一个小细节值得注意,a=[1,2,3,4,5]和 a=[1..5]尽管看起来很像,实际并不是一码事。

ReplaceItemAtIndex浅析插图3

    可以发现前者是一个一维列表,而后者是二维列表,这是因为dynamo为a=[1..5]将要可能加入的元素预留了位置。

ReplaceItemAtIndex浅析插图4

所以将a=[1,2,3,4,5]改成a=[1..5]的形式,上述功能并不能奏效:

ReplaceItemAtIndex浅析插图5

3.使用PythonScript

一开始我写出了下面蹩脚的语句:

ReplaceItemAtIndex浅析插图6

试图用for循环历遍列表中的每一项,软件提示我在第四行太多值没有打包

ReplaceItemAtIndex浅析插图7

于是百度了一下Python打包函数是zip(),zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。就有了:

ReplaceItemAtIndex浅析插图8

ReplaceItemAtIndex浅析插图9

如愿的将列表变成了想要的样子。

—————————————————–(我是分割线)

此外,我还发现List.Insert也存在着类似的问题:

ReplaceItemAtIndex浅析插图10

当然解决办法也是类似:

ReplaceItemAtIndex浅析插图11

这样写看起来有点臃肿,不太符合python简洁优雅的气质,于是可以这样:

ReplaceItemAtIndex浅析插图12

欢迎阅读,分享,后台回复交流,批评指正。

如转载请注明出处,否则追究法律责任(说说而已,全靠自觉)。

ReplaceItemAtIndex浅析插图13

0

评论0

请先

没有账号? 注册  忘记密码?

社交账号快速登录

微信扫一扫关注
扫码关注后会自动登录网站
普人特福的博客cnzz&51la for wordpress,cnzz for wordpress,51la for wordpress