Here are some of the steps that you can follow to optimize a nested if...elif...else.
1. Ensure that the path that'll be taken most is near the top. This ensures that not multiple conditions are needed to be checked on the most executed path.
2. Similarly, sort the paths by most use and put the conditions accordingly.
3. Use short-circuiting to your advantage. If you have a statement like:
if heavyOperation() and lightOperation():
Then consider changing it to
if lightOperation() and heavyOperation():
This will ensure that heavyOperation is not even executed if lightOperation is false. Same can be done with or conditions as well.
4. Try flattening the nested structure. Though this doesn't optimize code, this can sure help make it more readable.