python - Python ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()
问题描述
a = np.random.randint(1, 10, (3,3))
b = np.random.randint(1, 10, (3,3))
c = None
l1 = [a, b, c]
for l in l1:
if l is None:
l1.remove(l)
l1
我收到 ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()。既然它已经检查了 l 是否为 none 那么它为什么不能删除它呢?
解决方案
发生这种情况的原因是,当尝试从 中删除l
(即None
)时l1
,remove(l)
会遍历数组并检查每个元素是否等于l
。一旦找到这个元素,它就会从列表中删除它。在进行比较时,它会遇到a
, 并检查是否a == None
为真。这将创建一个布尔数组,其中的每个元素是否l
为无。当您在 if 语句中使用它时,它是否为真是模棱两可的。
而是使用
l1 = [l for l in l1 if not type(l) == type(None)]
过滤掉None
列表中的所有 s。
推荐阅读
- asp.net-core - 如何在 .NET 6 集成测试中使用 AddInMemoryCollection?
- linux - 从源代码构建 libevent 时如何生成 PKG CONFIG 文件?
- html - 外接显示器和笔记本电脑屏幕的设计不同
- angular - Fullcalendar - 水平(列)资源和垂直天数
- python - 如何创建未知数量的变量并将其保存到 Django 模型?
- omnet++ - 多跳网络中如何在数据传输前启动路由发现?
- flutter - 如何在线性进度指示器下方对齐不同的阶段?
- python - flask-restx 如何从模型创建解析器
- python - 多表多列之间的操作
- pdf - 我可以使用消息代理将 PDF 或 MS Word 文档内容作为 XML 流式传输吗?