Python Generator vs Iterator usage

#Generator
gen=(x for x in [1,2,3])

#Iterator
it = iter([1,2,3])

#Both can be it iterated over:
for i in gen:
  print i 

for i in it:
  print i

So, what is the difference? Both theoretically and practically? And which version should I use?