2016-10-03 3 views
0
Cols = [(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)] 
Index = [1,2,3,4,5,6] 
Temp = ['RT','85C','125C','175C','220C','260C'] 


for i,c,t in Index, Cols, Temp: 
    print(i,c,t) 

저는 튜플로, i는 튜플로, c는 정수로, t를 문자열로 사용하고 싶습니다.튜플과 배열을 가진 다중 변수 for 루프

에 ValueError : 내가 위를 할 때 나는 점점 계속 너무 많은 값을 풀고 그래서 다른 솔루션에 의해 제안 다음 시도

(3 예상) :

x = [[(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)], [1,2,3,4,5,6], ['RT','85C','125C','175C','220C','260C']] 

for c,i,t in x: 
    print(i,c,t) 

그러나 얻었다 같은 오류. 여기에 내가 얻을하고자하는 것입니다 것은 :

First loop: 
i = 1 
c = (10,11) 
t = 'RT' 

Second loop: 
i = 2 
c = (8,9) 
t = '85C' 
. 
. 
. 
. 
+0

인덱스 목록을 사용하는 대신'enumerate'를 사용하는 것을 고려하십시오. – erip

답변

3

당신은 당신의 목록 요소 현명한

for i,c,t in zip(Index, Cols, Temp): 
    print(i,c,t) 

출력

1 (10, 11) RT 
2 (8, 9) 85C 
3 (6, 7) 125C 
4 (4, 5) 175C 
5 (2, 3) 220C 
6 (0, 1) 260C 
2

당신이 필요로하는 모든이를 반복하는 zip 기능을 사용할 필요가 a zip()

Cols = [(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)] 
Index = [1,2,3,4,5,6] 
Temp = ['RT','85C','125C','175C','220C','260C'] 


for i,c,t in zip(Index, Cols, Temp): 
    print(i,c,t) 
3

you can do like this

Cols = [(10,11),(8,9),(6,7),(4,5),(2,3),(0,1)] 
Index = [1,2,3,4,5,6] 
Temp = ['RT','85C','125C','175C','220C','260C'] 
loops_value = ['First','Second','Third','Fourth','Fifth','Sixth'] 

for j, i, c, t in zip(loops_value, Index, Cols, Temp): 
    print "%s loop" % j 
    print 'i = ', i 
    print 'j = ', c 
    print 'k = ', t 
2

기본적으로 for 문은 내용을 한 번에 하나씩 반복하므로 각 반복에서 하나의 값만 사용할 수 있습니다.

당신이 하나를위한 세 가지 목록을 사용하고자하는 것 .since 당신은 ValueError를을 풀고 너무 많은 값을 받고 왜 그 세 개의 변수에 하나 개의 값을 풀고하려고

for i,c,t in Index, Cols, Temp: 

를 사용하여 이 목적을 위해 사용할 수있는 함수 zip(), izip() 및 izip_longest()가 있습니다.

zip()은 i 번째 튜플에 zip()에 대한 인수로 전달 된 각 목록의 i 번째 요소가 들어있는 튜플 목록을 반환합니다. 반환 된 목록은 전달 된 목록의 길이로 잘립니다.

for i,c,t in zip(Index, Cols, Temp): 
     print i,c,t 

izip는()() 우편으로 동일하게 작동하지만 반복자를 반환 한 번 통과 할 수 있으며, 하나의 통과를위한 우편()에 비해 그들은 빠르다.

from itertools import izip 
    for i,c,t in izip(Index, Cols, Temp): 
      print i,c,t 

izip_longest()는 반복 가능 객체가 고르지 길이의 경우, 누락 된 값은 기본적으로 아무도 없다하지만 요구 사항에 따라 업데이트 될 때 모두 우편으로()와 izip()하지만 도움을 동일하게 작동합니다.

from itertools import izip_longest 
    for i,c,t in izip_longest(Index, Cols, Temp,fillvalue= 0): 
     print i,c,t 

iterables 길이가 불규칙한 경우 fillvalue 인수는 누락 된 값, 즉 0입니다.

희망이 있습니다. :)