【发布时间】:2013-01-29 04:37:57
【问题描述】:
我有一个数组,每个索引都是另一个数组。如果我有一个 int,我如何编写代码来检查 int 是否存在于 python 中数组中每个数组元素的前 2 个索引中。
例如: 3 英寸
array = [[1,2,3], [4,5,6]]
会产生 False。
3 英寸
array = [[1,3,7], [4,5,6]]
会产生 True。
【问题讨论】:
我有一个数组,每个索引都是另一个数组。如果我有一个 int,我如何编写代码来检查 int 是否存在于 python 中数组中每个数组元素的前 2 个索引中。
例如: 3 英寸
array = [[1,2,3], [4,5,6]]
会产生 False。
3 英寸
array = [[1,3,7], [4,5,6]]
会产生 True。
【问题讨论】:
您可以使用numpy.array
import numpy as np
a1 = np.array([[1,2,3], [4,5,6]])
a2 = np.array([[1,3,7], [4,5,6]])
你可以这样做:
>>> a1[:, :2]
array([[1, 2],
[4, 5]])
>>> 3 in a1[:, :2]
False
>>> 3 in a2[:, :2]
True
【讨论】:
您可以切片您的数组以获取其中的一部分,然后像这样使用in 运算符和any() 函数:
>>> array = [[1,2,3], [4,5,6]]
>>> [3 in elem[:2] for elem in array]
[False, False]
>>> any(3 in elem[:2] for elem in array)
False
>>> array = [[1,3,7], [4,5,6]]
>>> [3 in elem[:2] for elem in array]
[True, False]
>>> any(3 in elem[:2] for elem in array)
True
any() 函数返回 True 如果迭代中至少有一个元素是True。
【讨论】:
第一个想到的方法是
len([x for x in array if 3 in x[:2]]) > 0
【讨论】:
>>> a = [[1,2,3], [4,5,6]]
>>> print any(3 in b[:2] for b in a)
False
>>> a = [[1,3,7], [4,5,6]]
>>> print any(3 in b[:2] for b in a)
True
【讨论】: