Je reçois toujours un objet TypeError 'Range' qui ne prend pas en charge l'affectation d'éléments. J'ai essayé de changer un peu le code comme dans l'addition (...) avant la plage, ainsi que la liste (...) avant la plage. Cependant, cela n'a pas aidé et l'erreur continue. Voici le code:L'objet Python Range ne prend pas en charge l'affectation
def findAnchor(anchors, node):
start = node
while node != anchors[node]:
node = anchors[node]
anchors[start] = node
return node
def unionFindConnectedComponents(graph):
anchors = range(len(graph))
for node in iter(range(len(graph))):
for neighbor in graph[node]:
if neighbor < node:
continue
a1 = findAnchor(anchors, node)
a2 = findAnchor(anchors, neighbor)
if a1 < a2:
anchors[a2] = a1
elif a2 < a1:
anchors[a1] = a2
labels = [None]*len(graph)
current_label = 0
for node in range(len(graph)):
a = findAnchor(anchors, node)
if a == node:
labels[a] = current_label
current_label += 1
else:
labels[node] = labels[a]
return anchors, labels
Maintenant, le TypeError est au début à des ancres [start] = nœud. Et node est un argument donné par la seconde fonction où il est dit pour node dans iter (range (len (graph))). Je l'ai essayé avec iter et avec liste, ni travaillé. Que faire?
Possible duplication de [TypeError: l'objet 'range' ne prend pas en charge l'affectation d'élément] (https: // stackoverfl ow.com/questions/20484195/typeerror-range-object-does-not-support-item-assignment) – jdhao