关于caches列表长度为4的技术疑问(预期应为3)
搞懂caches列表长度为啥不符合预期
嘿,我来帮你拆解这个疑惑:你觉得linear_cache只有3个数组,添加到caches列表后长度应该是3,但实际输出是4,问题出在你混淆了两个概念——linear_cache的元素数量和**caches列表的元素数量**。
先理清楚关键细节
先看你的代码和输出:
你的代码
A, W, b = linear_forward_test_case() Z, linear_cache = linear_forward(A, W, b) caches.append(linear_cache) print("Z = " + str(Z)) print("cache =" + str(linear_cache)) print("Length of caches list = " + str(len(caches)))
输出结果
Z = [[ 3.26295337 -1.23429987]] cache =(array([[ 1.62434536, -0.61175641], [-0.52817175, -1.07296862], [ 0.86540763, -2.3015387 ]]), array([[ 1.74481176, -0.7612069 , 0.3190391 ]]), array([[-0.24937038]])) Length of caches list = 4
问题的核心原因
- 首先,
linear_cache确实是一个包含3个数组的元组(从输出里能看到它被括号包裹的3个array元素) - 但你执行
caches.append(linear_cache)的时候,是把整个元组作为一个单独的元素添加到caches列表里的,不是把元组里的3个数组分别加进去 - 那结果列表长度是4,说明在执行
append操作之前,caches列表已经有3个元素了!
举个直白的例子:如果caches一开始是[x, y, z],你把linear_cache这个元组加进去后,它就变成了[x, y, z, linear_cache],长度自然是4。
快速验证方法
你可以在append之前加一行代码,看看caches的初始长度:
# 先打印初始长度 print("caches列表初始长度: " + str(len(caches))) caches.append(linear_cache) print("添加后caches列表长度: " + str(len(caches)))
这样就能直观看到初始状态,彻底搞明白额外元素的来源啦。
内容的提问来源于stack exchange,提问作者Gerrit
相关产品推荐
相关产品推荐

