2013-05-06 3 views
3

저는 약간의 파이썬 초보자입니다. 그래서 이것이 매우 기본적인 질문이라면 사과드립니다. 나는 "YS"에서 "XS"를 첫 번째 항목의 첫 번째 항목을하여 프린트 할 루프를 만들고 싶습니다두 개의 목록을 쌍으로 만드는 방법은 무엇입니까?

with filein as f: 
     reader=csv.reader(f) 
     xs, ys = zip(*reader) 

:

난에서 얻은 두 개의 데이터 목록이 아웃. 그런 다음 목록으로 돌아가서 두 목록의 두 번째 항목에 대해 반복하고 싶습니다.

내가 생각했던 것 같은 :

for x in xs and y in ys: 

또는

for x in xs: 
    for y in ys: 

그러나이 중 어느 것도 원하는 결과를 줄 것으로 보인다.

답변

8

는 터플 풀기와 함께 zip 기능을 사용

for x, y in zip(xs, ys): 
    print x, y 

를 귀하의 경우에는, 당신의 xsys을 필요에 따라, 당신은 직접 csv.reader을 통해 반복 할 수 :

with filein as f: 
    reader=csv.reader(f) 
    for x, y in reader: 
     print x, y 

zip(xs, ys) 줄이 실제로 xs, ys = zip(*reader) 줄을 뒤집어 놓았습니다.

3

사용 zip : 당신이 map()lambda()의 조합을 사용할 수있는 한 줄 들어

>>> L=[1,2,3] 
>>> M=[4,5,6] 
>>> for a,b in zip(L,M): 
... print(a,b) 
... 
1 4 
2 5 
3 6 
0

. Look here if not familiar to this concepts.

하지만 인쇄가 함수이며 람다 식 내부에서 사용할 수 있도록 python 3.x가 있어야합니다.

>>> from __future__ import print_function 
>>> l1 = [2,3,4,5] 
>>> l2 = [6,7,3,8] 
>>> list(map(lambda X: print(X[0],X[1]), list(zip(l1,l2)))) 

출력

2 6 
3 7 
4 3 
5 8 
관련 문제