[英]print(len(list_a)) is printed as two but print(list_a) is printed as []
我正在修改 python 代码以查看 pygame 表面上的车道检测图像。 它工作得相当好,但偶尔我会看到来自下面函数的错误消息(我添加了两个打印用于调试)。
def display_lines(image, lines):
line_image = np.zeros_like(image)
if lines is not None:
print('len of lines:',len(lines))
print(lines)
for line in lines:
x1, y1, x2, y2 = line
cv2.line(line_image, (x1,y1), (x2,y2), (255,0,0), 4)
return line_image
当它正常时,它会打印如下:
len of lines: 2
[[ 251 720 998 0]
[1026 720 281 0]]
当出现错误时,错误信息是这样的:
len of lines: 2
[]
Traceback (most recent call last):
File "./automatic_control.py", line 758, in <lambda>
self.sensor.listen(lambda image: CameraManager._parse_image(weak_self, image))
File "./automatic_control.py", line 803, in _parse_image
line_image = display_lines(lane_image, averaged_lines)
File "./automatic_control.py", line 700, in display_lines
x1, y1, x2, y2 = line
ValueError: need more than 0 values to unpack
在错误情况下, print(lines)
只打印[]
但为什么它为print(len(lines))
打印2
? 可能是什么问题呢?
lines
不是一个列表。 lines
是一个 NumPy 数组。 如果您要使用 NumPy,那么您确实需要了解这些完全不同的类型。
在让您感到困惑的情况下, lines
是一个 2x0 数组。 NumPy 数组的len
是其第一维的长度,因此lines
长度为 2,但它仍然包含 0 个元素。
我本来希望这样的数组打印为
[[]
[]]
但显然它打印为[]
。
为了获得更多信息,您应该打印数组的repr
,它会显示类似
array([], shape=(2, 0), dtype=something)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.