检查元组列表中是否出现元组时出现 ValueError
ValueError when checking if tuple occurs in list of tuples
当我在 运行 我的代码中时,我突然得到一个意想不到的错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我正在尝试检查列表中是否出现元组:
concat_tuples = [(7, 18), (7, [0, 10, 19]), (7, 16)]
to_explode = [c for c in concat_tuples if any(isinstance(x, list) and
len(x) > 1 for x in c)]
# >> to_explode = [(7, [0, 10, 19])]
not_explode = [x for x in concat_tuples if x not in to_explode]
但是,我的最后一行代码在我的第一个值(可能还有其他值)的脚本中失败了。奇怪的是它在我的 Python 控制台中有效,但在我的脚本 (pytests) 中无效。我的脚本可能出了什么问题?
我试过的
- 使用
list.index()
检查列表中是否存在。这也失败并出现相同的错误
- 检查了 x 和 to_explode 的类型,它们分别是元组和元组列表
- 重新格式化代码:列表理解为常规 for 循环,仍然没有成功
- 运行 Python 控制台中的代码,有效
事实证明,有时大多数元组包含整数,有时它们包含 numpy int32 对象,这导致了错误。我通过将所有内容转换为字符串来修复它。
当我在 运行 我的代码中时,我突然得到一个意想不到的错误:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我正在尝试检查列表中是否出现元组:
concat_tuples = [(7, 18), (7, [0, 10, 19]), (7, 16)]
to_explode = [c for c in concat_tuples if any(isinstance(x, list) and
len(x) > 1 for x in c)]
# >> to_explode = [(7, [0, 10, 19])]
not_explode = [x for x in concat_tuples if x not in to_explode]
但是,我的最后一行代码在我的第一个值(可能还有其他值)的脚本中失败了。奇怪的是它在我的 Python 控制台中有效,但在我的脚本 (pytests) 中无效。我的脚本可能出了什么问题?
我试过的
- 使用
list.index()
检查列表中是否存在。这也失败并出现相同的错误 - 检查了 x 和 to_explode 的类型,它们分别是元组和元组列表
- 重新格式化代码:列表理解为常规 for 循环,仍然没有成功
- 运行 Python 控制台中的代码,有效
事实证明,有时大多数元组包含整数,有时它们包含 numpy int32 对象,这导致了错误。我通过将所有内容转换为字符串来修复它。