例如我有这个清单:
A = [(1, 2.5), (2, 5.0), (3, 7.5), (4, 10.0)]
我有另一个列表,其中包含以下条目:
B = [2.5, 7.5, 12.5]
我想要的是Python中的一个程序,如果A
中每个元组的第二个元素,即2.5
,5.0
,7.5
和{{1} },可以在10.0
中找到,它将创建另一个看起来像这样的变量:
B
删除C = [(1, 2.5), (3, 7.5)]
中第二个元素不在A
中的其他元组。我试着用这种方式编码:
B
但我收到了错误:
ValueError:具有多个元素的数组的真值是不明确的。使用a.any()或a.all()
答案 0 :(得分:2)
为什么不简单地说明以下内容:
>>> A = [(1,2.5), (2,5.0), (3,7.5), (4,10.0)]
>>> B = [2.5, 7,5, 12.5]
>>> C = [a for a in A if a[1] in B]
>>> C
[(1, 2.5), (3, 7.5)]
答案 1 :(得分:2)
您可以使用np.n1d来确定A[:, 1]
中的哪些值也在B
中:
In [104]: A = np.array([(1,2.5), (2,5.0), (3,7.5), (4,10.0)])
In [105]: B = [2.5, 7.5, 12.5]
In [106]: mask = np.in1d(A[:, 1], B)
In [107]: mask
Out[107]: array([ True, False, True, False], dtype=bool)
In [108]: A[mask]
Out[108]:
array([[ 1. , 2.5],
[ 3. , 7.5]])