快速检查Python列表中的多个类似元素

时间:2017-10-11 20:15:48

标签: python arrays numpy

检测数组列表中类似元素的有效方法是什么,其中元素可以位于同一个数组中,也可以位于不同的数组中?

我将矩阵表示为块网格,并且具有彼此相邻的相同值的任何元素被组合成一个“块”。块可以是矩形或正方形,但不能是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 listlist(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;

0 个答案:

没有答案