'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
최근댓글