Using Data Driven Pages (DDP) to create set of maps with same extent but different layers?
A code free method
When you turn on data driven pages you can specify a definition query that is dependant on the page number. Simply use that query to hide all features from layers that you do not want to show.
- Setup your map frames to be in the same location, but with a field for page number. Setup Data driven pages with the page number as the name field.
- If you want a layer to be turned on for a particular page, add a "page" attribute to its table, and set to the relevant page number.
- Add a Page Definition Query to the particular layer with your newly created field.
When the page is selected the desired layers will become visible based on the page definition query.
Here's my thinking in pseudocode: you'd get your MapDocument, then ListDataFrames, then ListLayers. Then you should be able to iterate through the Layers, toggle the Layer's Visibility property on, ExportToPDF (or whatever), then toggle Visibility off again, and move on to the next Layer. If you want to leave certain layers on as base layers, maybe you could group the ones you want to change for each map and only toggle visibility for those by testing for IsGroupLayer=True? Maybe someone else has an actual code example...