我正在制作一个C4D插件,我想知道:,您如何使用groupby来根据包含的值拆分数组?
我将这些代码发送到样条构建器函数,但是如果按原样发送分片列表,就会得到行之间的连接,这是不需要的。

因此,我需要发送分离的列表,以便样条构建器创建这些线路的集合,从而避免互连。

#initial contains XYZ vectors
splinelist = [(-200, 0, -200), (0, 0, -200), (200, 0, -200), (-200, 0, 0), (0, 0, 0), (200, 0, 0), (-200, 0, 200), (0, 0, 200), (200, 0, 200)]
#desired handcoded for example separated based on Z value
la = [(-200, 0, -200), (0, 0, -200), (200, 0, -200)]
lb = [(-200, 0, 0), (0, 0, 0), (200, 0, 0)]
lc = [(-200, 0, 200), (0, 0, 200), (200, 0, 200)]
#desired list of lists based on Z value
desiredlist = [[(-200, 0, -200), (0, 0, -200), (200, 0, -200)],[(-200, 0, 0), (0, 0, 0), (200, 0, 0)],[(-200, 0, 200), (0, 0, 200), (200, 0, 200)]]发布于 2015-11-17 04:04:03
我认为这能满足你的需要:
import itertools
splinelist = [(-200, 0, -200), (0, 0, -200), (200, 0, -200), (-200, 0, 0), (0, 0, 0), (200, 0, 0), (-200, 0, 200), (0, 0, 200), (200, 0, 200)]
grouped = itertools.groupby(splinelist, lambda x : x[2])
desiredlist = [list(group) for key, group in grouped]
print(desiredlist)输出:
[[(-200, 0, -200), (0, 0, -200), (200, 0, -200)], [(-200, 0, 0), (0, 0, 0), (200, 0, 0)], [(-200, 0, 200), (0, 0, 200), (200, 0, 200)]]https://stackoverflow.com/questions/33748751
复制相似问题