파이썬

[Python] 'for' 루프에서 인덱스 액세스

zooheon 2022. 7. 31. 13:56
반응형

for루프 에서 인덱스에 어떻게 액세스 합니까?

xs = [8, 23, 45]

for x in xs:
    print("item #{} = {}".format(index, x))

원하는 출력:

item #1 = 8
item #2 = 23
item #3 = 45

 

내장 함수 사용 enumerate():

for idx, x in enumerate(xs):
    print(idx, x)

추가 상태 변수 를 통해 수동으로 인덱싱 하거나 수동으로 관리하는 것은 비파이썬 적입니다.for i in range(len(xs)): x = xs[i]

자세한 내용은 PEP 279 를 확인하십시오 .

 

for 루프를 사용하여 이 경우 1에서 5까지 루프 인덱스에 어떻게 액세스합니까?

enumerate반복할 때 요소가 있는 인덱스를 가져오는 데 사용 합니다.

for index, item in enumerate(items):
    print(index, item)

그리고 Python의 인덱스는 0에서 시작하므로 위와 같이 하면 0에서 4가 됩니다. 1부터 5까지의 개수를 원하면 다음을 수행하십시오.

count = 0 # in case items is empty and you need it after the loop
for count, item in enumerate(items, start=1):
    print(count, item)

단일 제어 흐름

당신이 요구하는 것은 저수준 언어의 대부분의 프로그래머가 사용하는 알고리즘인 다음과 같은 Pythonic입니다.

index = 0            # Python's indexing starts at zero
for item in items:   # Python's for loops are a "for each" loop 
    print(index, item)
    index += 1

또는 for-each 루프가 없는 언어에서:

index = 0
while index < len(items):
    print(index, items[index])
    index += 1

또는 때로는 Python에서 더 일반적으로(그러나 단조롭게) 발견됩니다.

for index in range(len(items)):
    print(index, items[index])

열거 기능 사용

Python의 enumerate기능 은 인덱스에 대한 설명을 숨기고 iterable을 다른 iterable( enumerate객체)로 캡슐화하여 인덱스와 원래 iterable이 제공할 항목의 2개 항목 튜플을 생성하여 시각적 혼란을 줄입니다. 다음과 같습니다.

for index, item in enumerate(items, start=0):   # default is zero
    print(index, item)

이 코드 샘플은 Python의 관용적 코드와 그렇지 않은 코드 간의 차이점에 대한 표준적인 예입니다. 관용적 코드는 사용 목적에 맞게 작성된 정교한(복잡하지 않은) Python입니다. 언어 설계자는 관용적 코드를 기대합니다. 이는 일반적으로 이 코드가 더 읽기 쉬울 뿐만 아니라 더 효율적임을 의미합니다.

카운트 받기

진행하면서 인덱스가 필요하지 않지만 시작할 수 있는 반복 횟수(때로는 바람직함)가 필요 1하고 최종 숫자가 카운트가 됩니다.

count = 0 # in case items is empty
for count, item in enumerate(items, start=1):   # default is zero
    print(item)

print('there were {0} items printed'.format(count))

개수는 1에서 5까지 원한다고 말했을 때 (색인과 달리) 요청하려는 것보다 더 많은 것 같습니다.


분해하기 - 단계별 설명

이러한 예를 분해하기 위해 인덱스로 반복하려는 항목 목록이 있다고 가정해 보겠습니다.

items = ['a', 'b', 'c', 'd', 'e']

이제 이 iterable을 enumerate에 전달하여 enumerate 객체를 생성합니다.

enumerate_object = enumerate(items) # the enumerate object

이 iterable에서 첫 번째 항목을 가져올 수 next있습니다.

iteration = next(enumerate_object) # first iteration from enumerate
print(iteration)

0그리고 첫 번째 인덱스와 'a'첫 번째 항목 의 튜플을 얻습니다 .

(0, 'a')

이 2-튜플에서 요소를 추출하기 위해 " 시퀀스 언패킹 " 이라고 하는 것을 사용할 수 있습니다 .

index, item = iteration
#   0,  'a' = (0, 'a') # essentially this.

검사할 때 index첫 번째 인덱스인 0을 item참조하고 첫 번째 항목인 를 참조합니다 'a'.

>>> print(index)
0
>>> print(item)
a

결론

  • Python 인덱스는 0에서 시작합니다.
  • iterable을 반복할 때 iterable에서 이러한 인덱스를 가져오려면 enumerate 함수를 사용하세요.
  • 관용적 방식으로 enumerate를 사용하면(튜플 압축 해제와 함께) 더 읽기 쉽고 유지 관리하기 쉬운 코드가 생성됩니다.

이렇게 하세요:

for index, item in enumerate(items, start=0):   # Python indexes start at zero
    print(index, item)

 

1다음 이외 의 것에서 시작하는 것은 매우 간단합니다 0.

for index, item in enumerate(iterable, start=1):
   print index, item  # Used to print in python<3.x
   print(index, item) # Migrate to print() after 3.x+
   

 

반응형