Deselect Neighbours Faces
Using bmesh

Yes it is do-able.  


Add all selected faces to one set
Remove the active face from set
Find all neighbouring faces


Going by screenshot, this is any face that has an edge in the edge loop of each of its vertices is deselected.

Remove them from the selection
Repeat with next selected face until exhausted.



Result of running on this grid with all selected

Test script, run in edit mode. Have a face as the active selection.

import bpy
import bmesh

context = bpy.context
ob = context.edit_object
me = ob.data
bm = bmesh.from_edit_mesh(me)

selfaces = set(f for f in bm.faces if f.select)

f = bm.select_history.active
selfaces.remove(f)
while True:

    # find all "neighbours" of f
    desel = set(f for v in f.verts for el in v.link_edges for f in el.link_faces)
    for f in selfaces.intersection(desel):
        f.select = False
    selfaces -= desel
    if not selfaces:
        break
    f = selfaces.pop()
bmesh.update_edit_mesh(me)


Recommend checking out bmesh via the py console. With a mesh in edit mode

&gt;&gt;&gt; import bmesh
&gt;&gt;&gt; bm = bmesh.from_edit_mesh(C.object.data)
&gt;&gt;&gt; bm
&lt;BMesh(0x7f3308fde308), totvert=100, totedge=261, totface=162, totloop=486&gt;