【发布时间】:2021-01-19 09:24:39
【问题描述】:
我有 2 个如下列表:
a=[[1,0,1,0,1],[0,0,0,1,0],[1,1,0,0,0]]
b=[[1,0,0,0,1],[0,1,0,1,0],[1,1,0,1,0]]
如果 b 中的所有子列表都存在于 a 中,我想返回 true,反之亦然。 这意味着 a 应该等于 b 但子列表的索引可以不同。 例如:
a=[[1,0,1,0,1],[0,0,0,1,0],[1,1,0,0,0]]
b=[[1,0,1,0,1],[1,1,0,0,0],[0,0,0,1,0]]
a 和 b 相等,比较应该返回 true。此外,子列表将仅包含 1 或 0 的组合。我如何比较它们? 我尝试将它们转换为集合: set(a) 但这会引发错误。 除此之外,当我在while循环中尝试以下代码时,它给出了一个错误
a=[[1,0,1,0,1],[0,0,0,1,0],[1,1,0,0,0]]
b=[[1,0,1,0,1],[1,1,0,0,0],[0,0,0,1,0]]
def sublists_equal(a, b):
return all(l for l in b if l in a)
print(sublists_equal(a, b))
错误是:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我尝试打印两个数组以查看问题所在,它们的打印如下:
[[0 1 0 1 0]
[0 1 1 1 1]
[0 0 0 0 1]
[0 1 0 0 0]]
[array([0, 1, 0, 1, 0]), array([0, 0, 0, 0, 1]), array([0, 1, 1, 1, 1]), array([0, 1, 0, 0, 0])]
【问题讨论】:
标签: python python-3.x comparison