'Returns an iterator over nodes with self loops.
A node with a self loop has an edge with both ends adjacent
to that node.
Returns
nodelist : iterator
A iterator over nodes with self loops.
See Also
selfloop_edges, number_of_selfloops
Examples
>>> G = nx.Graph()   # or DiGraph, MultiGraph, MultiDiGraph, etc
>>> G.add_edge(1, 1)
>>> G.add_edge(1, 2)
>>> list(G.nodes_with_selfloops())
[1]'

def nodes_with_selfloops(self):

    return (n for (n, nbrs) in self._adj.items() if (n in nbrs))
