2017-12-20 27 views
1

바깥 쪽 범위 변수를 사용할 때와 마찬가지로 첫 번째 요소를 하나의 var로, 다른 var를 같은 루프로 뒤로 가져 오는 방법은 무엇입니까? 두 바르Python에서 양방향 for 루프를 어떻게 우아하게 생성합니까?

+0

두 개의 별도 'for'루프를 실행하지 않고 한 번만 카운트하고 하나만 카운트 다운하지 않는 이유는 무엇입니까? –

+0

그런 다음 동시에 두 개의 vars에 액세스 할 수 없으며 복잡성이 두 배가됩니다. –

+0

동시에 반비례하는 두 개의 변수에 액세스해야하는 경우를 생각할 수 없습니다. . 하지만 '중간 점'이 '0'이라고 가정하면 'x ='에 루프 내부에'y = -x'와 같은 것을 설정할 수 있습니다. 그런 다음 동시에 액세스 할 수 있고 반비례 할 수 있습니다 (한 줄만 추가하면 됨). –

답변

3

을 반환 열거 비슷한 기능이 있나요 그럴 수 zip 하나 반복자와 역 :

발전기와
20 29 
21 28 
22 27 
23 26 
24 25 
25 24 
26 23 
27 22 
28 21 
29 20 

하지만, 당신이 강제로 :에

z = range(20,30) 

for x,y in zip(z,reversed(z)): 
    print(x,y) 

결과 반복으로 listreverse 시퀀스를 기대하기 때문에

TypeError: argument to reversed() must be a sequence 

list, tuple 또는 range은 정상입니다.

g = (x for x in somefunc() if x > 0) 
lst = list(g) 
for x,y in zip(lst, reversed(lst)): 
    ... 
+0

올바르게 사용 된 발전기가이 예제에서 문제를 일으키는 경우를 보여 줄 수 있습니까? –

+0

실제로 발전기에서 전혀 작동하지 않습니다 목록에 넣지 않는 한. 내 게시물을 편집했습니다. –