在for循环中可以理解python列表吗?

2024-09-30 01:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑下面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来在每次迭代中对不同范围的列表进行切片。在


Tags: 代码inobj列表for切片rangerhino
1条回答
网友
1楼 · 发布于 2024-09-30 01:28:02

好吧,那部分工作得很好:

>>> objlist = range(10)
>>> for j in range(1,3):
...   print objlist[1+ j*3:4+ j*3]
... 
[4, 5, 6]
[7, 8, 9]

注意,由于您编写循环的方式,j等于1的情况将只适用于您的变量objlist1,而{}等于2的情况将只适用于您的变量objlist2。这就是让你困惑的地方吗?在

我认为你也应该重构它,如果理解要排这么长的一行,那么使用显式循环比总是巧妙地使用列表理解要好。而且,是的,你应该在这里使用字典,而不是乱搞globals(),但我想你已经知道了。在

相关问题 更多 >

    热门问题