chqhroqkfwk
50
2019-03-15 20:02:20
2
146

파이썬 for문


a=0

b=0

for i in [a,b]:

i+=1

print(i)

print(a,b)


위 코드를 실행시

1

1

00

이렇게 결과가 나옵니다.

for문 안에서만 연산 결과가 적용되고 for문이 끝나면 연산 결과가 적용되지 않은 상태가 됩니다.

아마 i가 리스트에서 값만 가져와서 쓰기 때문에 그런것 같은데 리스트에 있는 값들을 for문을 통해

변화시킬 수 있는 방법이 있나요? 자바에서는 foreach를 하면 이런식으로 배열에 있는 값들을 각각

변화시킬 수 있었던것 같은데 파이썬에서는 어떻게 이런 작업을 수행하나요?

0
0
  • 답변 2

  • 배고파서서러워요
    2k
    2019-03-15 21:18:55

    지금 작동중인 for문은 array로 선언되어 array 크기만큼 돌리기만 하는겁니다.

    변수 재할당이 전혀 이루어지고 있지 않으니 값이 변하지 않고 있는것이니, for문 안에서 변수에 값 재할당 하면 값 변할겁니다.

    지금 돌리는 for문은 자바로 치환하면 for(int i = 0; i < array.length; i++) 로 돌리고 있는 상태죠....

    매우 아쉽게도 python은 foreach가 없.... 

    그냥 평범하게 for문 쓰듯이 쓰시면 됩니다.


    0
  • dohyeong
    298
    2019-03-15 23:32:06

    자바도 안되는건 마찬가진데요.

    int[] arr = {1,2,3}:
    for (int i : arr) {
      i += 1;
    }

    리스트 값을 바꾸려면

    arr = [1,2,3];
    for i in range(len(arr)):
      arr[i] += 1

    또는

    arr = [1,2,3]
    arr = map(lambda i: i+1, arr)


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.