1

我想阅读一个图,其顶点编号为 0..n-1。我尝试了以下代码:

myfile = open('test.in', 'r')
n = int(myfile.readline())
graph = [[]]*n
for line in myfile:
    u, v, w = map(int, line.strip().split(' '))
    graph[u].append((v, w))
print graph

但效果不好。我发现里面的所有元素graph都是一样的!然后我使用下面的代码来修复它:

road = [[] for i in xrange(n)]

它确实有效,但看起来不那么漂亮。

我想知道这种情况是否有更好的解决方案以及为什么第一个代码中的所有元素都相同

4

1 回答 1

2

你可以使用

from collections import defaultdict
graph = defaultdict(list)

graph = [[]]*n不起作用的原因是您正在创建一个空列表,然后对同一个列表进行多次引用

于 2012-09-23T03:16:47.867 回答