프로그래밍/python
[python] for문에서 index 값 수정하기
잇서니
2021. 2. 17. 16:27
반응형
for i in range(1,n+1):
if arr[x[i]][y[i]] == 0 : arr[x[i]][y[i]] = i #해당 자리에 아무도 없는 경우
else:
if age[arr[x[i]][y[i]]] < age[i] :
age[arr[x[i]][y[i]]] = age[i] #나중에 들어온 사람 나이가 더 많은 경우
remove(i)
i -= 1 #i번째 사람 다시 한 번 확인
i가 3일때 else문에 들어왔다고 해보자.
그러면 i -= 1을 통해 i값이 1 감소되어 2가 된다.
그러면 그 다음 반복문에서 i값이 1 증가하니 3이 될 줄 알았다.
그러나 python에서는 원래 반복문대로 i가 4가 된다. 즉 i -= 1 의 효과가 없는 것이다.
c++에서는 우리가 생각하는대로 i가 3이 된다.
i = 1
while i <= n:
if arr[x[i]][y[i]] == 0 : arr[x[i]][y[i]] = i #해당 자리에 아무도 없는 경우
else:
if age[arr[x[i]][y[i]]] < age[i] :
age[arr[x[i]][y[i]]] = age[i] #나중에 들어온 사람 나이가 더 많은 경우
remove(i)
i -= 1 #i번쨰 사람 다시 한 번 확인
# (for range 사용하면 안됨! c++이랑 쫌 다름. i가 -1해도 다음 for문 타게 됨.)
i += 1
그래서 for문을 사용하지 않고, while문으로 대체했다.
아놔 이것 때문에 죙일 왜 안되나 스트레스 받았다.
무튼 python의 특징이니 염두해두자!
반응형