将多行输入放在单独的列表中,Python

时间:2017-05-27 09:17:04

标签: python list input nodes

我想制作一个代码来找到树中最快的方法,但是我在输入正确方面遇到了麻烦。 输入存在于多个节点之外,其后是每个节点的相邻节点的行,最后一行是包含起始和结束节点的行。

6
1 4
0 2 4
1 3
2 4 5
0 1 3
3
0 3

这将是6,节点和节点0将与节点1和4连接,节点1与节点0,节点2和节点4等连接,我们希望找到从节点0到节点3的路径

到目前为止我已经

numberofnodes=int(input())
no_of_lines = numberofnodes
lines = ""
for i in range(numberofnodes):
    lines+=input()+"\n"
startfinish=(input().split())

如果我打印节点数,行数和startfinish,我得到

6
1 4
0 2 4
1 3
2 4 5
0 1 3
3

['0', '3']

我一直试图让列表中的节点的邻居也一样,所以我的其余代码都可以工作,但我遇到了麻烦。我尝试过的所有内容都将它们列在一个列表中,但我希望它们分开列表。

1 个答案:

答案 0 :(得分:0)

首先,在树中寻找最快(可能是最短的)方式(路径)是无稽之谈,因为每个节点只有1条路径。您可能希望在图表上执行此操作(tree是一种特殊类型的graph)。

除了术语,从空列表开始 lines = [],将保留其他列表。 在你的for循环中,你还需要像对待最后一行一样分割线,并且将字符串解释为数字可能是有用的。您可以使用追加添加项目到列表,请参阅documentation

lines = []
for i in range(numberofnodes):
    line = []
    for word in input().split():
        line.append(int(word))
    lines.append(line)

打印lines(现在是列表列表,即嵌套列表)输出如下:

[[1, 4], [0, 2, 4], [1, 3], [2, 4, 5], [0, 1, 3], [3]]

查看列表中的一些基本python教程,逐步完成更难的练习,在完全理解如何使用列表之前不要尝试编写难题。