[EMAIL PROTECTED] wrote: > Hi, > > I am wondering how this is evaluated. > > a=(x for x in [1,2,3,4]) > p=[4,5] > > c=[x for x in p if x in list(a)] > > c is []
No it isn't. In [1]: a=(x for x in [1,2,3,4]) In [2]: p=[4,5] In [3]: c=[x for x in p if x in list(a)] In [4]: c Out[4]: [4] I'm willing to bet that you used up the 'a' iterator before you ran that list comprehension, though. In [5]: c=[x for x in p if x in list(a)] In [6]: c Out[6]: [] Note that "x in list(a)" gets executed on each iteration, but the iterator is used up on the first time. In [7]: a=(x for x in [1,2,3,4]) In [8]: p = [4, 5, 2, 3] In [9]: c=[x for x in p if x in list(a)] In [10]: c Out[10]: [4] -- Robert Kern [EMAIL PROTECTED] "In the fields of hell where the grass grows high Are the graves of dreams allowed to die." -- Richard Harter -- http://mail.python.org/mailman/listinfo/python-list