2017-11-02 4 views
0
>>> a = [1,2,3,4,5,6] 
>>> b = ["q","r","f","v","d","a"] 
>>> c = zip(a,b) 
>>> list(c) 
[(1, 'q'), (2, 'r'), (3, 'f'), (4, 'v'), (5, 'd'), (6, 'a')] 
>>> [x for x in list(c)] 
[] 

왜 이해력이 작동하지 않습니까? 나는 요소들로 계산을하고 그것을 새로운 목록에 저장하려고합니다.리스트 이해력으로 반복자를 걷는 법

답변

2

zip()은 한 번만 사용할 수있는 반복기를 만듭니다.

list(c)을 구성하는 데 사용하는 경우 반복기에 목록 이해에 사용할 수있는 항목이 더 이상 없습니다.

list(c)으로 전화를 거는 경우 목록 이해가 완벽하게 작동합니다.

또한 볼 수 반복자의 개별 단계에보고하여 :

In [68]: c = zip(a, b) 

In [69]: mylist = [x for x in list(c)] 

In [70]: mylist 
Out[70]: [(1, 'q'), (2, 'r'), (3, 'f'), (4, 'v'), (5, 'd'), (6, 'a')] 
: 당신이 바로 지능형리스트를 사용하는 경우

In [60]: c = zip(a, b) 

In [61]: c.__next__() 
Out[61]: (1, 'q') 

In [62]: c.__next__() 
Out[62]: (2, 'r') 

In [63]: c.__next__() 
Out[63]: (3, 'f') 

In [64]: c.__next__() 
Out[64]: (4, 'v') 

In [65]: c.__next__() 
Out[65]: (5, 'd') 

In [66]: c.__next__() 
Out[66]: (6, 'a') 

In [67]: c.__next__() 
--------------------------------------------------------------------------- 
StopIteration        Traceback (most recent call last) 
<ipython-input-67-bc609abc99c4> in <module>() 
----> 1 c.__next__() 

StopIteration: 

, 당신이 원하는 결과를 얻을 수