티스토리 뷰

파이썬에서는 아주 간결하게 한 줄로 된 for 반복문을 이용할 수 있습니다. 반복 대상 항목을 하나씩 순회하면서 변수에 저장하고 그 변수를 사용자가 원하는 동작을 수행하는 방식이며 생김새는 이렇습니다.

[변수로 어떤 동작 for 변수 in 반복대상]

예를 들어서 나도고등학교에서는 출석번호가 1, 2, 3, 4, 5, ... 이렇게 되어 있었는데 새학기부터는 각 번호에 100을 더한 형태로, 즉, 101, 102, 103, 104, 105, ... 이렇게 바뀐다고 합니다. 우선 리스트에 5개의 출석번호 [1, 2, 3, 4, 5] 를 저장한 상태에서 한 줄 for 를 이용하여 변형을 해보겠습니다.

students = [1, 2, 3, 4, 5]
print(students) # [1, 2, 3, 4, 5]

# 한 줄 for 를 이용하여 각 항목에 100 을 더함
students = [i + 100 for i in students]
print(students) # [101, 102, 103, 104, 105]

 

한 줄 for 를 사용하는 부분을 자세히 살펴볼까요?

 

다음 문장을 해석하면, 반복대상인 students 리스트에서 하나씩 값을 가져와서 i 라는 변수에 저장하고, 그 변수를 활용하여 i + 100 이라는 명령을 실행한 값들을 새로운 리스트로 만들어서 students 에 집어넣는 의미입니다.

students = [i + 100 for i in students]

 

조금 더 풀어서 적어보면 다음 문장과 같은 동작을 합니다.

students = [students[0] + 100, students[1] + 100, students[2] + 100, students[3] + 100, students[4] + 100]

 

students 의 각 인덱스에 해당하는 실제 값으로 풀어보면 이렇겠네요.

students = [1 + 100, 2 + 100, 3 + 100, 4 + 100, 5 + 100]

 

다시 정리하면, 반복 대상 항목의 값들에 대해서 각각 어떤 동작을 수행하고, 수행한 결과들을 모아서 새로운 리스트로 만드는 것입니다.

잠깐!
이 때 사용된 i 는 사용자가 임의로 사용한 이름이며, 다른 이름을 사용해도 됩니다. 다만 그 이름이 "변수" 위치와 "변수로 어떤 동작" 위치에 동일하게 사용되어야 한다는 점만 주의해주세요

(예)
students = [x + 100 for x in students]
students = [name + 100 for name in students]

 

다른 예제를 들어보겠습니다. 이번에는 이름이 저장된 리스트가 있는데 한 줄 for 를 이용하여 각 이름의 길이 정보를 가지는 리스트로 변형해보겠습니다.

students = ["Iron man", "Thor", "I am groot"]
print(students) # ["Iron man", "Thor", "I am groot"]

# 한 줄 for 를 이용하여 각 이름의 길이 정보로 변환
students = [len(i) for i in students]
print(students) # [8, 4, 10]

띄어쓰기를 포함한 각 이름의 길이는 "Iron man" 은 8, "Thor" 는 4, "I am groot" 는 10이며 이 값들이 새로운 리스트로 만들어져서 students 에 저장되는 코드입니다.

students = [len(i) for i in students]

 

위 코드를 풀어서 적어보면 이렇게 되겠네요.

students = [len(students[0]), len(students[1]), len(students[2])]

 

students 의 각 인덱스에 해당하는 실제 값으로 풀어볼까요?

students = [len("Iron man"), len("Thor"), len("I am groot")]

 

예제를 하나만 더 들어보겠습니다. 이름 정보를 가지는 동일한 리스트를 사용하되, 각 이름을 모두 대문자로 바꿔보겠습니다.

students = ["Iron man", "Thor", "I am groot"]
print(students) # ["Iron man", "Thor", "I am groot"]

# 한 줄 for 를 이용하여 각 이름을 대문자로 변경
students = [i.upper() for i in students]
print(students) # ['IRON MAN', 'THOR', 'I AM GROOT']

이제는 조금 익숙하죠?

이 코드가 어떻게 동작하는지, 풀어서 적어보면 어떻게 되는지 여러분께서 직접 해석을 해보시면 좋겠습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함