检测数组列表中类似元素的有效方法是什么,其中元素可以位于同一个数组中,也可以位于不同的数组中?
我将矩阵表示为块网格,并且具有彼此相邻的相同值的任何元素被组合成一个“块”。块可以是矩形或正方形,但不能是L形。我还需要跟踪有多少元素。
例如,数组可以是这样的:
[[1, 2, 2, 1, 4]
,[3, 4, 0, 1, 0]]
这里的“块”将是一个2块的块和1块
块[[0, 2, 2, 0, 3]
,[3, 2, 2, 1, 4]]
这里的“块”将是一个2块
语法for element in list
和list(set(list1).intersection(list2))
没有给出你有多少元素,我可以尝试使用一堆for循环,但是有更好的方法吗?
UPDATE :块长度最大为2(2个水平,2个垂直,如例2)。
x = 0
for row in grid: # loop each array in grid of arrays
y = 0
for val in row: # loop each value in array
if val == row[y + 1]: # found horizontal block of 2 (same block on the right)
# DO SOMETHING
elif val == self.state[x + 1][y]: # found vertical block of 2 (same block on the bottom)
# DO SOMETHING
elif val == row[y - 1] or
val == self.state[x - 1][y]: # block already checked in previous if
continue; # skip loop
else: # stand alone block
# DO SOMETHING
y += 1;
x += 1;