私はこの簡単なコードを持っています:
class bfs:
vis=[]
bags=[]
def __init__ (self,x):
for i in p: #initializes vis with len(p) zeroes
self.vis.append(0)
print self.vis
self.vis[x]=1 #marks index x as visited
print self.vis
p=raw_input("Input values: ").split()
for i in range(0,len(p)):
p[i]=int(p[i])
q=[]
for i in range(0,len(p)):
q.append(bfs(i))
print
for i in q:
print i.vis
たとえば、任意の 3 つの数字を入力すると、次のような出力が得られるのはなぜですか。
[0]
[0, 0]
[0, 0, 0]
[1, 0, 0]
[1, 0, 0, 0]
[1, 0, 0, 0, 0]
[1, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 0, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
[1, 1, 1, 0, 0, 0, 0, 0, 0]
このようなものの代わりに?
[0]
[0, 0]
[0, 0, 0]
[1, 0, 0]
[0]
[0, 0]
[0, 0, 0]
[0, 1, 0]
[0]
[0, 0]
[0, 0, 0]
[0, 0, 1]
[1, 0, 0]
[0, 1, 0]
[0, 0, 1]
プログラムは、作成されたすべてのオブジェクトで 1 つの配列を操作し続けているようです。理由がわかりません。どんな助けでもうねるでしょう。