Python 如何为族树创建列表列表
python新手。正在学习创建生成列表列表的函数。。。例如,可以表示家谱的东西。以下是我的想法:Python 如何为族树创建列表列表,python,list,Python,List,python新手。正在学习创建生成列表列表的函数。。。例如,可以表示家谱的东西。以下是我的想法: def familytree(root): many = int(input('How many children does "' + root[0] + '" have? ')) if many > 0: root.append([[] for y in range(many)]) z = root[1]
def familytree(root):
many = int(input('How many children does "' + root[0] + '" have? '))
if many > 0:
root.append([[] for y in range(many)])
z = root[1]
for j in range(many):
name = [input("Give name of one of " + root[0] + "'s children?")]
z[j] = name
familytree(name)
print(root)
似乎有用
['A', [['B', [['D', [['G'], ['H']]], ['E', [['I']]]]], ['C', [['F', [['J'], ['K']]]]]]]
。。。但结果不需要括号和打印输出
有没有更好的实施建议
下一步将处理类结构。以下是如何仅打印最终结果。我还简化了一些其他的东西,使它更清晰一些
def familytree(root):
many = int(input('How many children does "' + root[0] + '" have? '))
if many > 0:
z = []
root.append(z)
for j in range(many):
name = [input("Give name of one of " + root[0] + "'s children?")]
z.append(name)
familytree(name)
root = ['A']
familytree(root)
print(root)
以下是您只能打印最终结果的方式。我还简化了一些其他的东西,使它更清晰一些
def familytree(root):
many = int(input('How many children does "' + root[0] + '" have? '))
if many > 0:
z = []
root.append(z)
for j in range(many):
name = [input("Give name of one of " + root[0] + "'s children?")]
z.append(name)
familytree(name)
root = ['A']
familytree(root)
print(root)
一种不破坏代码的简单方法:
root = ['A']
def familytree(root):
many = int(input('How many children does "' + root[0] + '" have? '))
if many > 0:
root.extend([] for y in range(many))
for j in root[1:]:
name = input("Give name of one of " + root[0] + "'s children? ")
j.append(name)
familytree(j)
print(familytree(root))
您还可以使用内置库漂亮地打印对象一种更简单的方法,而不破坏代码:
root = ['A']
def familytree(root):
many = int(input('How many children does "' + root[0] + '" have? '))
if many > 0:
root.extend([] for y in range(many))
for j in root[1:]:
name = input("Give name of one of " + root[0] + "'s children? ")
j.append(name)
familytree(j)
print(familytree(root))
您还可以使用内置库漂亮地打印对象请使用代码缩进进行重构。您的意思是要更改列表的打印方式吗?不是。除了上面输入的最终结果之外,该函数还打印许多中间步骤。例如:['f'、['j']、['k']]['c'、[['f'、['j']、['k']].['k']]预期的输出是什么样的
A
有4个孩子,我给它取了一个名字B
。。。然后呢?有多少代人,一代人该怎么填?您如何在一个列表中表示B
的后代,该列表将他分类为与C、D、E
同一代的一部分,他们有自己独特的后代?该函数要求您以深度优先的方式分别为每个孩子命名。你可以随心所欲地代代相传。例如,如果根[“A”]有2个子项(名为B&C),则B有1个子项(名为D),C有2个子项(名为E&F)。。。当提示您输入名称时,您将按以下顺序依次添加名称:根A-->B-->D-->C-->E-->F。(注意:此示例与我的原始帖子不同)请使用代码缩进进行重构。您的意思是要更改列表的打印方式吗?实际上不是。除了上面输入的最终结果之外,该函数还打印许多中间步骤。例如:['f'、['j']、['k']]['c'、[['f'、['j']、['k']].['k']]预期的输出是什么样的A
有4个孩子,我给它取了一个名字B
。。。然后呢?有多少代人,一代人该怎么填?您如何在一个列表中表示B
的后代,该列表将他分类为与C、D、E
同一代的一部分,他们有自己独特的后代?该函数要求您以深度优先的方式分别为每个孩子命名。你可以随心所欲地代代相传。例如,如果根[“A”]有2个子项(名为B&C),则B有1个子项(名为D),C有2个子项(名为E&F)。。。当提示输入名称时,您将按以下顺序依次添加它们:根A-->B-->D-->C-->E-->F。(注意:此示例与我原来的文章不同)