'for'루프의 색인에 액세스하는 것은?


질문

 

다음과 같은 루프에서 인덱스에 어떻게 액세스 할 수 있습니까?

ints = [8, 23, 45, 12, 78]
for i in ints:
    print('item #{} = {}'.format(???, i))

나는이 출력을 얻고 싶다 :

item #1 = 8
item #2 = 23
item #3 = 45
item #4 = 12
item #5 = 78

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


답변

 

C 또는 PHP와 같은 언어로 정상적으로 사용되는 인덱스 변수 (예 : C 또는 PHP와 같은 언어로 사용되는)와 같은 추가 상태 변수를 사용하는 것은 비정능이 아닌 것으로 간주됩니다.

더 나은 옵션은 내장 함수 열거 형 ()을 사용하여 두 번째와 3에서 사용할 수있는 것입니다.

for idx, val in enumerate(ints):
    print(idx, val)

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



답변

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

enumerate를 사용하여 인덱스를 oteRerate로 입력하십시오.

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

파이썬의 인덱스는 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)

Unidiomatic Control Flow.

귀하가 묻는 것은 다음과 같은 파이 톤과 동등한 것입니다. 이는 하위 수준 언어의 대부분의 프로그래머가 사용할 것입니다.

index = 0 # 파이썬 인덱싱은 0에서 시작됩니다 항목의 항목 : # Python for 루프는 "각"루프 인쇄 (인덱스, 항목) 인덱스 + = 1입니다.

또는 각 루프가없는 언어로 :

색인 = 0. 색인

때로는 Python에서 더 일반적으로 (하지만 유니사오로) 발견됩니다.

범위 내의 인덱스 (LEN (항목)) 인쇄 (색인, 항목 [색인])

열거 기능을 사용하십시오

Python의 열거 형 기능은 인덱스의 회계를 숨기고 인덱스의 2 항목 튜플과 원래의 iterable이 제공 할 항목을 제공하는 다른 티버 탭 (열거 객체)으로 캡슐화 할 수있는 빙하를 캡슐화합니다.이게 :

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

이 코드 샘플은 파이썬 및 코드의 관용지 인 코드 간의 차이점의 정규적 인 예입니다.관용적 코드는 정교합니다 (복잡하지는 않지만 복잡하지는 않지만) 파이썬은 사용하려는 방식으로 작성되었습니다.관용도 코드는 언어 디자이너가 예상하며, 이는 대개이 코드가 더 읽기 쉽지는 않지만 더 효율적입니다.

카운트 얻기

당신이가는 것처럼 인덱스가 필요하지 않지만, 당신은 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']

이제 우리는이 복잡한 객체를 생성하여 열거 할 수 있도록이 복잡한 것을 전달합니다.

enumerate_object = enumerate(items) # the enumerate object

우리는 다음 기능을 가진 루프에서 얻을 수있는이 iterable에서 첫 번째 항목을 당길 수 있습니다.

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

그리고 우리는 우리가 0, 첫 번째 색인, 첫 번째 항목 인 0, 첫 번째 색인 및 'a'튜플을 볼 수 있습니다.

(0, 'a')

우리는이 두 튜플에서 요소를 추출하기 위해 "시퀀스 포장을 풀거나"라고하는 것을 사용할 수 있습니다.

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

그리고 인덱스를 검사 할 때 첫 번째 인덱스를 참조하는 것이 좋습니다. 0, 항목은 첫 번째 항목을 참조합니다. '.

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

결론

파이썬 인덱스는 0에서 시작합니다 이 인덱스를 반복 할 때 이들 인덱스를 얻으려면 enumerate 함수를 사용하십시오. 관용적 인 방식으로 열거하는 것을 사용하십시오 (튜플 풀기와 함께) 더 읽고 유지 보수가 가능한 코드를 만듭니다.

그래서 이것을하십시오 :

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


답변

0 이외의 다른 1에서 시작하는 것은 꽤 간단합니다.

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


답변

for i in range(len(ints)):
   print(i, ints[i]) # print updated to print() in Python 3.x+ 


답변

파이썬의 규범은 여러 가지 방법이 있습니다.모든 예에서 가정 : LST = [1, 2, 3, 4, 5]

1. 열거를 사용하여 (가장 관용한 것으로 간주되는)

for index, element in enumerate(lst):
    # do the things that need doing here

이것은 무한 재귀가 될 기회가 없어지었기 때문에 내 의견에서 가장 안전한 옵션이기도합니다.항목과 그 색인은 모두 변수로 유지되며 추가 코드를 작성할 필요가 없습니다. 항목에 액세스하려면.

2. 인덱스를 보유 할 변수 만들기 (사용하기)

for index in range(len(lst)):   # or xrange
    # you will have to write extra code to get the element

3. 인덱스를 보관할 변수 만들기 (WHILE)

index = 0
while index < len(lst):
    # you will have to write extra code to get the element
    index += 1  # escape infinite recursion

4. 항상 다른 방법이 있습니다

이전에 설명한대로 여기에서 설명하지 않은 다른 방법으로는 다른 상황에서도 더 많은 것을 적용 할 수도 있습니다.e.g itertools.chain을 사용하여.다른 예보다 중첩 된 루프를 핸들링합니다.



답변

구식 방식 :

for ix in range(len(ints)):
    print(ints[ix])

목록 이해 :

[ (ix, ints[ix]) for ix in range(len(ints))]

>>> ints
[1, 2, 3, 4, 5]
>>> for ix in range(len(ints)): print ints[ix]
... 
1
2
3
4
5
>>> [ (ix, ints[ix]) for ix in range(len(ints))]
[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]
>>> lc = [ (ix, ints[ix]) for ix in range(len(ints))]
>>> for tup in lc:
...     print(tup)
... 
(0, 1)
(1, 2)
(2, 3)
(3, 4)
(4, 5)
>>> 
출처:https://stackoverflow.com/questions/522563/accessing-the-index-in-for-loops