Python Forum

Full Version: need help with some explanation
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
http://imgur.com/a/Ijcbi
n = int(input("Enter the number of vertices you want"))
FileName = input("Please input name of file:")
edgeFile = open(FileName)

#empty adj.list
adjList = n*[0]
for i in range(n):
    adjList[i]=[]

#adj.list
for line in edgeFile:
    edgePoint = line.split()
    adjList[int(edgePoint[0])].append(int(edgePoint[1]))
    adjList[int(edgePoint[1])].append(int(edgePoint[0]))

edgeFile.close
print(adjList)
This code was given by lecturer and it works and gives the result : [[1, 2], [0, 2, 3], [1, 0], [1]]
I've been trying to understand why it gives output like that,i know those are the vertices that connects but i just don't know how the table of [[1, 2], [0, 2, 3], [1, 0], [1]] is produced.
Moderator Larz60+: Added code tags. Please use in the future


Before your for loop. adjList is initialized as [[], [], [], []]. In every pass of a loop one line is read from file, converted to a pair of ints and "processed".

First line is 0 1, that means there is an edge connecting vertex 0 with vertex 1, so 1 is appended to adj[0] list (to note that vertex 0 is connected to vertex 1), and 0 is appended to adj[1] list (again, to note that 1 is connected to 0). So after first run of loop block adjList is [[1], [0], [], []].

In second run edge 2 1 is added, so adjList becomes [[1], [0, 2], [1], []]. In remaining two runs edges 0 2 and 1 3 are added, so when for loop ends, adjList is [[1, 2], [0, 2, 3], [1, 0], [1]]

And , "need help with some explanation" is a terrible thread title, title actually saying something would be much better - for example "making graph from file" or "how edges convert to a list".
In addition, you should use with blocks for file handling, to avoid things like the error in your code. (you never close the file you opened)