考虑下面Rhino v.5中的python列表理解代码:
for j in range(1,3):
globals()["objlist" + str(j)] = [rs.OrientObject(obj, [rs.PointCoordinates(x) for x in objlist[1:4]], [rs.PointCoordinates(x) for x in objlist[1+ j*3:4+ j*3]], 1) for obj in objlist]
因为你们很多人都不知道我在这里所说的rhinoscriptsyntax命令:
^{pr2}$我希望您可以阅读rest语法,因为问题在于列表理解,而不是rhinoscriptsyntax。在
我无法开始工作的是列表切片代码中的第二个“j”:
^{3}$我只得到j=1的结果,而不是j=2的结果,尽管我在范围(1,3)的循环中使用了j
在这种情况下,“forj in range(1,3)”是完全不起作用的吗?它只适用于“=”的左侧,我将它用于“objlist+str(j)”,或者它根本不应该用于列表理解,我应该找到一种方法用列表理解重写所有内容?在
注:即使我用字典解决了globals()问题,我仍然需要j来在每次迭代中对不同范围的列表进行切片。在
好吧,那部分工作得很好:
注意,由于您编写循环的方式,}等于
j
等于1
的情况将只适用于您的变量objlist1
,而{2
的情况将只适用于您的变量objlist2
。这就是让你困惑的地方吗?在我认为你也应该重构它,如果理解要排这么长的一行,那么使用显式循环比总是巧妙地使用列表理解要好。而且,是的,你应该在这里使用字典,而不是乱搞
globals()
,但我想你已经知道了。在相关问题 更多 >
编程相关推荐