파이썬 range 1분만에 이해하기 (enumerate)
파이썬 range 1분만에 이해하기 (enumerate) — #파이썬range #파이썬enumerate AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다 파...
#파이썬range #파이썬enumerate
AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다
파이썬 range( )
이번에는 내장함수에 관한 이야기입니다. 오늘은 반복문에서 자주 사용되는 range( ) 내장함수를 이해하는 시간을 가져보겠습니다.
range( )
언제쓸까?
어디에 쓰인지 안다는건 학습능율을 높이는 일입니다. range( )함수는 시퀀스 데이터를 정해진 숫자(범위)만큼만 이터레이트(반복)하고 싶을때 사용됩니다. 조금더 쉽게 표현하자면, i를 0(N)부터 N까지 반복 하고 싶을때 사용합니다.
| >>> for i in range(5): # 0 1 2 3 4 끝 숫자는 포함되지 않습니다.. . . print(i) . . . 01234>>> for i in range(2, 8): # 범위 지정도 ok!. . . print(i). . . 234567 |
|---|
이전글에 다룬 반복문 기초예제도 다음과 같이 응용이 가능합니다.
| >>> words =\['A', 'B', 'C', 'D'\] . . . for i in range(len(words)): . . . word = words\[i\]. . . print(i, word\])0 A1 B2 C3 D |
|---|
range( )의 세번재 인자
range( )를 다음과 같이 작성할 수 있습니다. 마지막 인자만큼 증가합니다.
| >>> for i in range(0, 10, 3). . . print(i)0369~~12~~ |
|---|
두번째 인수보다 작은 범위까지만 증가합니다.
range( )와 list(range( ))의 차이?
보통 range( )를 사용할때는 list(range( )) 방식을 사용하여 list를 만드는데, for문을 돌릴때 왜 range( )를 그대로 사용하는걸까? 아래 코드를 보면서 질문을 이해해보자.
| >>> for i in \[0, 1, 2, 3\]:. . . print(i). . .>>> for i in list(range(4)):. . . print(i) . . . >>> for i in range(4). . . print(i). . . |
|---|
위의 코드들은 같은 결과를 출력하는데 어떤 차이가 있는걸까? 아래코드를 보자
| a = list(range(10000000000000)) \[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 ···, 10000000000000 \] b = range(10000000000000) |
|---|
a의 경우에 0부터 10000000000000까지의 리스트를 만든다. 만약 반복문으로 돌리게 된다면, range( )범위 만큼 리스트를 만드는데 상당한 시간이 소요될 것이다. 게다가 list이기 때문에 10000000000000까지의 값을 실제로 소유하여 공간도 많이 차지한다.
b의 경우에는 range( )는 무조건 다음숫자만 가지기 때문에, 실제 공간을 차지하지 않는다.
enumerate
시퀀스와 함께 반복하려면
위에서 for을 이용한 시퀀스의 인덱스를 반복할때는 enumerate를 사용하시면 됩니다.
| >>> for word in enumerate(\['A', 'B', 'C'\]). . . print(word)(0, 'A')(1, 'B')(2, 'C' |
|---|
enumerate는 기본적으로 인덱스와 원소로 이뤄진 튜플(tuple)을 만들어줍니다. 인덱스와 원소를 다른 변수로 담아주기 위하여 인자풀기(unpacking) 작업을 해주셔야 합니다.
| >>> for i, word in enumerate(\['A', 'B', 'C'\]). . . print(i, word). . .0 A1 B2 C |
|---|
enumerate의 기본적인 개념만 다루기에 이정도면 충분합니다.
핵심내용 두줄 요약
- range()는 시퀀스(순서에 따라 정렬)를 인덱스 범위를 지정하여 반복문을 돌릴 수 있게한다.
- enumerate는 시퀀스의 인덱스와 요소를 함께 뽑아낼때 사용한다.
