2014-02-13 4 views
0

오랫동안 Python을 사용하고 있습니다. 다음과 같은 코드를 작성했습니다 :루프 외부의 배열에 액세스

for i in range(mem_max): 
    for j in range(nx): 
     temp = [] 
     for k in range(ny): 
      temp.append(table[i][j][k]) 
     print temp 
    print ("\n") 

주 루프 대신 임시 배열 []에 액세스하려고합니다. 나는 "반환"을 사용하려고했지만 도움이되지 않았다. 누구든지 아이디어를 공유 할 수 있습니까? 어떻게 든 코드의 성질로 인해 외부에 temp []를 정의 할 수 없습니다.

+0

내 코드의 특성으로 인해 언급 한 것처럼 – user741592

+2

외부에서 정의 할 수 없다는 것은 무엇을 의미합니까? "코드의 본질"은 매우 모호합니다. 오류가 있습니까? – Tyler

+1

@ C.B. 파이썬에서 루프에 대한 로컬 스코프가 없습니다 – SethMMorton

답변

1

그냥 사용하십시오. 파이썬은 C 언어가 아니기 때문에 제어 문장의 흐름은 범위를 정의하지 않습니다.

http://ideone.com/m4mX9y

당신이 원하는 의미가 없을 수 있습니다,하지만

for i in range(10): 
    temp = [] 
    temp.append(i) 

print temp 
.

+0

문제는 이전 루프 반복에서 데이터를 덮어 쓰는 문제라고 생각합니다. 'temp = []'. 그들은 아마도 추가 한 모든 데이터에 액세스하기를 원하기 때문에 바깥 쪽 루프의 시작 부분에서 'temp = []'만 수행하면됩니다. – SethMMorton

+0

@SethMMorton, OP는 분명히 그들의 질문을 언급했다. 나는 결국 공정한 경고를했다. 그러나, 그들이 무엇을하고 있는지 아는 경우 문제의 원인이되지 않습니다. 나는 파이썬과 C (몇 안되는 것)를 구별하는 것이 중요하기 때문에 대답을 추가했다. 루프 내에서 변수가 생성 되더라도 변수에 액세스 할 수 있지만 앞에 선언 할 때와 동일한 의미를 가질 수는 없습니다. – StoryTeller

1

외부 루프를 시작하기 전에 배열을 선언하기 만하면됩니다.

temp = [] 
for i in range...... 

루프의 내부를 선언 할 때; 그것은 빈 배열로 다시 생성됩니다

+0

"* outer * 루프를 시작하기 전에"를 지정해야한다고 생각합니다 – SethMMorton