There are two mistakes in your script.  

1. Since `intersect_ls` is a list, use `extend` instead of `append`. The reason of getting error is that. Because one of the element of `fin_ls` is a geometry, the other is a list, but it should have been a geometry.
    
        fin_ls.append(differ)
        fin_ls.extend(intersec_ls)

2. Since `gdf` is a `GeoDataFrame`, you cannot use parenthesis with `gdf` as in `gdf( geometry= geom)`. Instead, use
    
        gdf = gpd.GeoDataFrame(gdf, geometry=geom) 

 Or just use `gdf = gpd.GeoDataFrame(geometry=geom)` if you didn't define `gdf` before. In this case `gdf` includes only geometries.