In your feature receiver, you can have the method to update the list first, and if getting this list throws an exception, you create it. Below is a "pseudo" code for how you might approach it:
protected void ProcessList(){
try{
var list = //code to get list from SPWeb.
}
catch(exception ex){
CreateList("ListTitle");
}
finally{
//do something
}
}
Alternatively, you can use some methods in the object model which when executed, gets the list, if it doesn't exist, returns null, so you can check this value if null or not, if null then call the method to create the list CreatList("ListTitle");
This way, if your list exists, it will get updated, otherwise it's going to be created.