프로그래밍 언어발행일 2023. 2. 6.원본 https://blog.naver.com/jword_/223005344171 ↗

파이썬 range 1분만에 이해하기 (enumerate)

파이썬 range 1분만에 이해하기 (enumerate) — #파이썬range #파이썬enumerate AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다 파...

#Languages#Naver Blog

#파이썬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는 시퀀스의 인덱스와 요소를 함께 뽑아낼때 사용한다.

​