Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 范围对象不支持赋值_Python_Python 3.x - Fatal编程技术网

Python 范围对象不支持赋值

Python 范围对象不支持赋值,python,python-3.x,Python,Python 3.x,我一直得到一个TypeError“Range”对象不支持项分配。我试着稍微修改代码,比如在范围之前添加iter(…),以及在范围之前添加list(…)。但是,这没有帮助,错误还在继续。 代码如下: def findAnchor(anchors, node): start = node while node != anchors[node]: node = anchors[node] anchors[

我一直得到一个TypeError“Range”对象不支持项分配。我试着稍微修改代码,比如在范围之前添加iter(…),以及在范围之前添加list(…)。但是,这没有帮助,错误还在继续。 代码如下:

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
def findAnchor(锚点、节点):
开始=节点
while节点!=锚定[节点]:
节点=锚点[节点]
锚点[开始]=节点
返回节点
def unionFindConnectedComponents(图形):
锚点=范围(长度(图表))
对于iter中的节点(范围(len(图)):
对于图[node]中的邻居:
如果邻居<节点:
持续
a1=findAnchor(锚、节点)
a2=findAnchor(锚、邻居)
如果a1
现在,TypeError位于锚点[start]=节点的开头。node是第二个函数的给定参数,其中表示iter中的node(range(len(graph)))。我用iter和list试过了,都没用。怎么办?

anchors=range(len(graph))
在Python2中生成一个
列表
,以便分配给它

但在Python3中,行为发生了变化
range
成为一个惰性序列生成对象,这节省了内存和CPU时间,因为它主要用于循环计数,并且很少使用它生成连续的实际
列表

发件人:

range不是一个函数,而是一个不可变的序列类型

这些对象不支持片分配(
[]
操作)

快速修复:在
范围
对象上强制迭代,您将获得一个对象,您可以使用切片分配:

anchors = list(range(len(graph)))
archors=range(len(graph))
在Python2中生成一个
列表
,以便您可以分配给它

但在Python3中,行为发生了变化
range
成为一个惰性序列生成对象,这节省了内存和CPU时间,因为它主要用于循环计数,并且很少使用它生成连续的实际
列表

发件人:

range不是一个函数,而是一个不可变的序列类型

这些对象不支持片分配(
[]
操作)

快速修复:在
范围
对象上强制迭代,您将获得一个对象,您可以使用切片分配:

anchors = list(range(len(graph)))

哇,太棒了,谢谢!我一直在尝试使用“节点”,我认为错误就在那里,因为start=node。是的,对于iter中的节点(范围(len(图)):
iter
在这里是无用的。嘎!吹毛求疵,但它不会成为发电机的功能。它是一种不可变的、恒定内存的序列类型,支持延迟生成其值。它不是发电机。它甚至不是迭代器。如果你不相信我,试试
r=range(10);接下来(r)
“范围对象”是一个明确的术语。再说一次,这只是一个吹毛求疵的问题,并不会影响你的回答。好吧,但对我来说,调用
range
一个“range object”似乎是一个循环定义:)哇,太棒了,谢谢!我一直在尝试使用“节点”,我认为错误就在那里,因为start=node。是的,对于iter中的节点(范围(len(图)):
iter
在这里是无用的。嘎!吹毛求疵,但它不会成为发电机的功能。它是一种不可变的、恒定内存的序列类型,支持延迟生成其值。它不是发电机。它甚至不是迭代器。如果你不相信我,试试
r=range(10);接下来(r)
“范围对象”是一个明确的术语。同样,这只是一个吹毛求疵的问题,并不会影响你的回答。好吧,但对我来说,调用
range
一个“range object”似乎是一个循环定义:)所以在所有这些时间之后,建议的复制目标是100%相同的。。。在所有这些时间之后,sighso关闭了,建议的复制目标是100%相同的。。。叹息