当前位置: 首页 > 知识库问答 >
问题:

Python-TypeError:类型为“…”的对象没有len()

衡修洁
2023-03-14

下面是一节课:

class CoordinateRow(object):

def __init__(self):
    self.coordinate_row = []

def add(self, input):  
    self.coordinate_row.append(input)

def weave(self, other):
    result = CoordinateRow()
    length = len(self.coordinate_row)
    for i in range(min(length, len(other))):
        result.add(self.coordinate_row[i])
        result.add(other.coordinate_row[i])
    return result

这是我计划的一部分:

def verwerk_regel(regel):
cr = CoordinateRow()
coordinaten = regel.split()
for coordinaat in coordinaten:
    verwerkt_coordinaat = verwerk_coordinaat(coordinaat)
    cr.add(verwerkt_coordinaat)
cr2 = CoordinateRow()
cr12 = cr.weave(cr2)
print cr12

def verwerk_coordinaat(coordinaat):
coordinaat = coordinaat.split(",")
x = coordinaat[0]
y = coordinaat[1]
nieuw_coordinaat = Coordinate(x)
adjusted_x = nieuw_coordinaat.pas_x_aan()
return str(adjusted_x) + ',' + str(y)

但是我在“cr12=cr.weave(cr2)”中得到了一个错误:

对于范围内的i(最小(长度,长度(其他)):

TypeError:类型为“CoordinaterRow”的对象没有len()

共有3个答案

阎兴为
2023-03-14

other是CoordinaterRow类型,没有长度。改用len(其他.坐标行)。这是具有length属性的列表。

秦涵涤
2023-03-14

在Python中,在一系列len(某物)上迭代在很大程度上是一种反模式。您应该迭代容器本身的内容。

在您的情况下,您只需将列表压缩在一起,然后迭代:

def weave(self, other):
    result = CoordinateRow()
    for a, b in zip(self.coordinate_row, other.coordinate_row):
        result.add(a)
        result.add(b)
    return result
公冶峰
2023-03-14

您需要添加一个\uuu len\uu方法,然后可以使用len(self)len(other)

class CoordinateRow(object):
    def __init__(self):
        self.coordinate_row = []

    def add(self, input):
        self.coordinate_row.append(input)

    def __len__(self):
        return len(self.coordinate_row)

    def weave(self, other):
        result = CoordinateRow()
        for i in range(min(len(self), len(other))):
            result.add(self.coordinate_row[i])
            result.add(other.coordinate_row[i])
        return result
In [10]: c = CoordinateRow()    
In [11]: c.coordinate_row += [1,2,3,4,5]    
In [12]: otherc = CoordinateRow()    
In [13]: otherc.coordinate_row += [4,5,6,7]    
In [14]:c.weave(otherc).coordinate_row
[1, 4, 2, 5, 3, 6, 4, 7]
 类似资料:
  • 我得到这个错误: TypeError:类型为“Cursor”的对象没有len() 当我试图执行:

  • 如何修复此错误:typeerror:类型为“generator”的对象没有len()

  • 这是我的代码。 以下是想要工作的例子。 除了前两个,所有的都能工作。我到哪里去了 “TypeError:类型为'bool/int'的对象没有len” 我该如何解决这个问题?

  • 问题内容: 问题:当我尝试执行脚本时,给出错误消息“ TypeError:类型为’Response’的对象没有len()。我尝试将实际的html作为参数传递,但仍然无法正常工作。 问题答案: 你越来越。但是它以字节(docs)的形式返回响应主体。但是您应该将其传递给BeautifulSoup构造函数(docs)。因此,您需要使用而不是获取内容。

  • 问题内容: 我对Python 3有问题。我有Python 2.7代码,此刻我正在尝试对其进行更新。我得到错误: TypeError:“地图”类型的对象没有len() 在这一部分: 在这样初始化之前: 那么,有人可以解释我该怎么做吗? (编辑:以前,此代码示例是错误的,因为它使用代替。现在已更新。) 问题答案: 在Python 3中,返回的地图对象不是: 您可以将其转换为列表,然后从那里获取长度:

  • 我正在开发一个多类分类问题(4类)的模型使用Keras和Tensorflow后端。的值具有二维格式: -----------------------------------------------------------------------------------------------------------------------------------------------------