【发布时间】:2020-02-21 21:27:40
【问题描述】:
对于物理程序的输入,我正在构建相互堆叠的层。对于每一层,可以堆叠多个对象,因此物理结果将如下图所示。
示例脚本显示了我想如何构建这些堆栈,并且我想生成一个元组列表,每个元组包含从底部开始垂直堆叠的对象。
对任何对象调用get_stacks() 将返回其上的堆栈。
多年来,我一直设法避免理解递归,但现在是时候学习了。有没有简单的方法来做到这一点?
class Thing():
def __init__(self, name):
self.name = name
self.things = []
def add(self, name):
thing = Thing(name)
self.things.append(thing)
return thing
def __repr__(self):
return ('{self.name}'.format(self=self))
def get_stacks(self):
"generates a list of tuples of vertically stacked objects"
stacks = []
# What do I do here to get a list of tuples of objects?
return stacks
S = Thing('S')
C = S.add('A').add('B').add('C')
D = S.add('D')
E = D.add('E')
F = D.add('F')
print(S.get_stacks()) # expect [('S', 'A', 'B', 'C'), ('S', 'D', 'E'), ('S', 'D', 'F')]
print(D.get_stacks()) # expect [('D', 'E'), ('D', 'F')]
print(C.get_stacks()) # expect [('C',)]
# ------------
# | C |
# ------------------------
# | B | E | F |
# ------------------------
# | A | D |
# ------------------------
# | Substrate |
# ------------------------
【问题讨论】:
标签: python python-3.x