Python 逻辑_和与列表列表一起使用

Python 逻辑_和与列表列表一起使用,python,numpy,boolean,Python,Numpy,Boolean,假设我有以下两个列表: l = [[], [1]] m = [0, 1] 如果我检查元素是否在列表中: >>> np.array(m[1]) == 1 True >>> 1 in np.array(l)[1] True 这正如预期的那样有效 但是,如果我使用numpylogical\u和运算符,则会失败: >>> np.logical_and(np.array(m) == 1, 1 in np.array(l)) array([False

假设我有以下两个列表:

l = [[], [1]]
m = [0, 1]
如果我检查元素是否在列表中:

>>> np.array(m[1]) == 1
True
>>> 1 in np.array(l)[1]
True
这正如预期的那样有效

但是,如果我使用numpy
logical\u和
运算符,则会失败:

>>> np.logical_and(np.array(m) == 1, 1 in np.array(l))
array([False, False])
为什么数组中的两个位置都被计算为
False

目标是按元素评估这些表单的列表。并且,根据文档,
np.logical_和
用于“计算x1和x2元素的真值”

因为l是一个列表列表,所以我使用操作符中的
来测试元素级比较

因此,我期望np.logical_和(np.array(m)=1,np.array(l)中的1)的输出

将来

array([False, True])
毕竟,
[1]
只是
np.array(l)
中的一个元素:


所以只需分析你的代码

np.array(m) == 1 
>>> [False  True]
1 in np.array(l)
>>> False
你基本上是在比较[假真]

更新


如果希望输出为[False-True],则应使用逻辑\u或。

您删除了
[1]
s。这是故意的吗?np.array(l)Out[30]:false如果是故意的,那么在将
np.logical_和
引入图片之前,您应该先查看np.array(m)==1
1在np.array(l)
中的单独输出。如果这是一个意外,那么这个问题应该被关闭,因为它是由于输入错误而发生的。不起作用:
>>(np.logical_和(np.array(m)==1,[1]在np.array(l)))数组([False,False])
。。。另外,虽然
[1]
是该元素(我完全同意!!),但测试是1是否在列表
[1]
中。如果名单在名单上就不会了。我明白你的意思。也许你可以把这个单子展平<代码>导入itertools
然后在np.array中
1(列表(itertools.chain.from_iterable(l))
返回True@bhaskarc已经回答了我的问题。我用
logical\u或
来评估其他条件,并且正在处理类似的奇怪错误。原来我没有意识到元素的类型是:
dtype=object
np.array(m) == 1 
>>> [False  True]
1 in np.array(l)
>>> False