It is a bit of a cheat, but if you store the names of the variables in the fruits array instead of the variable itself, it is trivial:
>>> apple = 'green'
>>> banana = 'yellow'
>>> orange = 'orange'
>>> fruits = ['apple','banana','orange']
>>> for fruit in fruits:
... print fruit, vars()[fruit]
...
apple green
banana yellow
orange orange
If you are really wanting to get the variable name, you have a problem as the array is not storing the variable, but the string it is pointing at - for example, you can change the content of apple after the assignment to demonstrate the array holds the original string:
>>> fruity = [ apple, orange, banana ]
>>> apple = 'yikes'
>>> print fruity
['green', 'orange', 'yellow']
The best you can do is build a reverse lookup of the vars() dictionary and attempt to look up the variable...
>>> yy = dict([v,k] for k,v in vars().items() if isinstance(v,str))
>>> for fruit in fruity:
... print yy.get(fruit,'Unknown'), fruit
...
Unknown green
orange orange
banana yellow