我有两个嵌套数组,如下所示:
firstArray=[[1,10],[11,31],[32,40],[41,61],[62,78]]
secondArray=[[1,10],[12,32],[33,39],[41,78]]
我现在想要在firstArray 中搜索secondArray 的元素。 我想要区分两个事件:
1:如果直接找到该元素,我想打印它。
2:如果未找到,我想打印前面和后面的元素,或者它跨越的元素/包含它的元素。
例如,对于第二个数组的 [1,10],我想打印第一个数组的[1,10],但对于第二个数组的 [12,32],我想打印第一个数组的 [11,31]和[32,40]。对于 secondaryArray 的 [33,39],我想打印firstArray 的 [32,40] 等等。
我知道,我可以使用嵌套的 for 循环访问两个数组,并且可以通过索引访问元素。如果没有直接点击,我将很难完成该部分。
对于直接点击,我正在执行以下操作:
foundYou=[]
for entry in firstArray:
for element in secondArray:
if(entry[0] == element[0]) and (entry[1] == element[1]):
foundYou.append(element)
我也做了一些关于索引的研究,但不知道如何解决这个问题。我还考虑过使用 <=、>=、< 和 >,但它会打印所有比第一个位置的搜索数字更小的元素,但它会打印比我想要的更多的元素。
我可以使用 map 和另一个数组来“索引”,其值从 1...数组长度开始,但这似乎是实现我想要的结果的一种相当复杂的方法。
提前致谢:)
最佳答案
你可以试试这个,我正在打印该值及其相应的结果。
firstArray=[[1,10],[11,31],[32,40],[41,61],[62,78]]
secondArray=[[1,10],[12,32],[33,39],[41,78]]
foundYou=[]
for second in secondArray:
for firstindex,first in enumerate(firstArray):
if second == first:
foundYou.append(first)
print(second,":",first)
else:
if second[0] >= first[0] and second[1] <= first[1]:
foundYou.append(first)
print(second,":",first)
else:
try:
if second[0] >= first[0] and second[1] <= firstArray[firstindex+1][1] and second[0] < first[1]:
foundYou.append(first)
foundYou.append(firstArray[firstindex+1])
print(second,":",first,firstArray[firstindex+1])
except IndexError:
pass
输出:
[1, 10] : [1, 10]
[12, 32] : [11, 31] [32, 40]
[33, 39] : [32, 40]
[41, 78] : [41, 61] [62, 78]
关于Python 3.x : Print specific array items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50464273/