You could use an intermediate dictionary that associates common sets to each value. Then extract the list of sets converting them to lists:
L = [[3, 0], [0, 9], [9, 13], [7, 4]]
merged = dict()
for sublist in L:
mSet = set().union(sublist,*filter(None,map(merged.get,sublist)))
for value in mSet:
merged[value] = mSet
*result, = map(list,{id(s):s for s in merged.values()}.values())
print(result)
[[0, 3, 9, 13], [4, 7]]
Note: This does not preserve the original order within each sublist. It also assumes that values are already unique within each list and will not preserve duplicates if there were any. If order or duplicates need to be preserved, a similar (albeit more involved) solution could be used. Please say so in your question if that is the case