파이썬 리스트 for문 인덱스 - paisseon liseuteu formun indegseu

C, C++, Java 등의 언어에서는 i, j 와 같이 index 변수를 가지고 반복문을 사용한다. Python에서는 리스트(list), 딕셔너리(Dictionary) 등에 접근할 때 for value in arr: 와 같이 index 변수를 사용하지 않고도 편리하게 사용할 수 있다. 하지만 종종 value 와 함께 index 값이 필요한 경우가 있다.

자료형 크기의 range를 이용하면 index로 접근할 수 있다.

arr = [2, 7, 10]
for idx in range(len(arr)):
    print(idx, arr[idx])

# Output:
# 0 2
# 1 7
# 2 10

하지만 python 에서 이런 방식을 사용하기에는 만족스럽지 못하다.

enumerate() 내장 함수를 이용하는 방법

enumerate()라는 내장 함수를 이용하면 더 편리하고 가시적인 코딩을 할 수 있다.

arr = [2, 7, 10]
for idx, val in enumerate(arr):
    print(idx, val)

# Output:
# 0 2
# 1 7
# 2 10

enumerate

enumerate는 ‘열거하다’라는 뜻이다.
enumerate() 내장 함수는 순서가 있는 자료형(tuple, list, string)을 첫번째 인자로 받아서 각각의 index 값과 value 값들을 enumerate 객체로 리턴한다.

my_list = ['apple', 'banana', 'grapes']
counter_list = list(enumerate(my_list))
print(counter_list)

# Output: [(0, 'apple'), (1, 'banana'), (2, 'grapes')]

두번째 인자로 정수를 전달하면 시작하는 index 값을 조정할 수도 있다.

arr = [2, 7, 10]
for idx, val in enumerate(arr, 5):
    print(idx, val)

# Output:
# 5 2
# 6 7
# 7 10

앱피아

Python/Python 응용

파이썬[Python] 리스트 반복문에서 인덱스(index)와 값 같이 출력하기(enumerate)

끔손 2020. 5. 2. 07:24

이번포스팅은루프를돌릴, 인덱스 값을나오게하는방법에대해서이야기를하고자합니다. 사람들은 다양한이유에서흔히들반복문을많이사용합니다. 연속된 데이터 또는 특정 시퀀스한 데이터 컨테이너에 있는 데이터에 접근하고자 할때 반복문을 많이 사용합니다. 특히나파이썬[Python]에서는반복문을사용하기매우편합니다. 바로 "in"이용하기때문입니다. 그럼간단히다음코드를한번 작성해보겠습니다.

example)

result) 

Text

Text1

Text2

Text3

Text4

cs

위의코드를실행해보니위와같은결과가나왔습니다. 물론, 결과는리스트안의모든값들을출력해줬습니다. 하지만, 값만 출력을 해줍니다. C언어 값의 경우는 for문에 range 값을 주고, 그 부분을 바탕으로 배열에 접근합니다. 그래서 인덱스(Index)값에 대해서 쉽게 확인 및 접근할 수 있습니다. 그럼 여기에서만약인덱스값을표현하고자한다면어떻게할까요? 흔히들다음과같은코드로작성을 있습니다.

example)

for v in range(0,len(List)):

print(v)

print(List[v])

cs

result) 

0

Text

1

Text1

2

Text2

3

Text3

4

Text4

cs

저 또한 처음에는 위와 같이 코드를 작성해서 원하는 값들의 순서, 즉 인덱스 값과 값을 같이 출력하고자 했습니다. 하지만 다음과 같이 enumerate함수를 이용해보도록 하겠습니다. 먼저 위에 선언한 리스트를 enumerate 함수를 적용해 보도록 하겠습니다. 

example) 

enumList = list(enumerate(List))

print(enumList)

cs

result) 

[(0'Text'), (1'Text1'), (2'Text2'), (3'Text3'), (4'Text4')]

cs

enumerate 함수를 리스트에 바로 적용하면 enumerate object라서 print문을 통해서 내용을 하기 힘들기 때문에, List로 다시 바꿔서 출력해봤습니다. 구성을 간단히 보시면, (index, value)이 형태로 구성되어 있습니다. 그럼 이를 바탕으로 위에서 작성한 코드와 동일한 결과를 만들어 보도록 하겠습니다. 

example)

for index, value in enumerate(List):

print(index)

print(value)

cs

result) 

0

Text

1

Text1

2

Text2

3

Text3

4

Text4

cs

enumerate를 하면 위에서 보시는 바와같이 (수치화 된 값, Value)로 리턴되어 받습니다. 그래서 이를 토대로 다음과 같이 index와 value로 변환 받도록 작업을 해봤습니다. 

그럼 위의 함수를 통해서 인덱스의 값이 짝수일 때만 값을 표현하도록 해보겠습니다. 

example) 

for index, value in enumerate(List):

if index % 2 == 0 :

print(str(index)+"번째 아이템 :" +value)

cs

result)

0번째 아이템 :Text

2번째 아이템 :Text2

4번째 아이템 :Text4

cs

위와 같이 나머지를 구하는 연산을 통해서 다음과 같이 한번 꾸며봤습니다. 

이번 포스팅은 반복문을 통해서 값 뿐 아니라, 인덱스(Index)값을 얻는 방법에 대해서 알아봤습니다. 반복문에 range와 len함수를 이용해서 구하는 방법과 enumerate를 이용해서 구하는 방법 이 2가지로 살펴봤습니다. 저는 enumerate 함수를 비교적 많이 좋아하는 편입니다. 그래서 자주 사용하는데, 어떤 분들은 가장 먼저 다루었던 range/len함수를 이용해서 사용하는 경우도 많습니다. 

혹시 궁금하시거나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다.