mardi 29 septembre 2015

Better way to check a list for specific elements - python

I'm using try/except blocks as a substitute for if/elif that has a bunch of ands. I am looking into a list and replacing some elements if it has x and x and x, etc. In my project, I have to check for upwards of 6 things which drew me to using the try/except with .index which will throw an error if the element isn't present.

An analogy looks like this:

colors = ['red', 'blue', 'yellow', 'orange']

try:
    red_index = colors.index('red')
    blue_index = colors.index('blue')
    colors[red_index] = 'pink'
    colors[blue_index] = 'light blue'
except ValueError:
    pass
try:
    yellow_index = colors.index('yellow')
    purple_index = colors.index('purple')
    colors[yellow_index] = 'amarillo'
    colors[purple_index] = 'lavender'
except ValueError:
    pass

So if the color array doesn't contain purple as well as yellow, I don't want the array to change.

I am a bit wary of this approach because it seems like abuse of try/except. But it is much shorter than the alternative because I would have to grab the elements' index anyway, so I would like to know if there are blatant problems with this or if this is crazy enough that other developers would hate me for it.

Aucun commentaire:

Enregistrer un commentaire