What is the most effective way to determine all edges in a graph that can be removed so that there will not arise new bridges in a given graph.
Currently I always copy the graph, remove an edge and check whether the bridges and number of bridges change. I repeat this for every edge and then return the list of edges. Choose one in the list and remove it.
When I want to remove several edges I repeat the whole process several times.
What would be a better/more efficient approach. (I always need the whole candidate list.)
I think you are looking for the edges that when removed give rise to all k-edge components with k=2.

Search for all k-edge components in G using nx.algorithms.connectivity.edge_kcomponents.k_edge_components (with k=2). This will yield all vertex sets resulting from cuts with a cut size of 2.

Induce a subgraph for each vertex set, and combine subgraphs using nx.compose into a graph H.

Determine the difference between G and H with nx.difference(G, H).
NetworkX Graph removing edges whose removal will not add bridges to the graph