Ah, no wonder. I test with p=[5,4]. thanks. so basically, I still need to expand it first given this behaviour.
Robert Kern wrote: > [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