Ah right, of course I guess I failed to process that correctly the first time.
Yes I think that your method is acceptable, however you can have the condition of spawning based on the variable 'weapons'.
[pseudo code]
<Condition> =/= (negate) Global('Weapons') equal 1
<Condition> Every X seconds (or whatever)
<ACTION---> Do stuff
[/pseudo code]
Rather than deleting it when the conditions are met, make it so it doesn't even spawn if the conditions are met instead.
Either way, it will be unnoticeably different in my opinion anyway, unless you are dealing with hundreds or thousands of powerups per second... so either method would be fine, I would say.
~Sol