[python] 'for'루프에서 색인에 액세스 하시겠습니까?



Answers

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

enumerate 를 사용하여 반복 할 때 요소가있는 인덱스를 가져옵니다.

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

그리고 파이썬의 인덱스는 0부터 시작하므로 위의 경우 0부터 4까지 얻을 수 있습니다. 카운트 1 ~ 5를 원하면 다음과 같이하십시오.

for count, item in enumerate(items, start=1):
    print(count, item)

Unidiomatic 제어 흐름

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

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

또는 때로는 더 일반적으로 (그러나 unidiomatically) 파이썬에서 발견됩니다 :

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

열거 함수 사용

파이썬의 enumerate 함수 는 인덱스에 대한 설명을 숨기고 반복 가능한 iterable을 인덱스의 두 항목 튜플과 원래 iterable이 제공 할 항목을 생성하는 다른 iterable ( enumerate 객체)으로 캡슐화함으로써 시각적 혼란을 줄입니다. 다음과 같이 보입니다.

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

이 코드 샘플은 파이썬의 관용적 인 코드와 그렇지 않은 코드의 차이에 대한 canonical 예입니다. 관용구 코드는 정교한 (복잡한 것은 아니지만) 파이썬으로, 의도 된 방식으로 작성되었습니다. 관용구 코드는 언어 설계자가 예상합니다. 즉, 보통이 코드는 읽기 쉽지는 않지만 더 효율적입니다.

카운트 받기

색인을 필요로하지 않더라도 반복 수 (필요에 따라)가 필요하면 1 부터 시작할 수 있으며 마지막 수는 계산됩니다.

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_object = enumerate(items) # the enumerate object

우리는이 반복문에서 첫 번째 항목을 추출하여 next 함수로 루프에 넣을 수 있습니다.

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

그리고 첫 번째 인덱스 인 튜플 0 과 첫 번째 항목 인 'a' 봅니다.

(0, 'a')

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

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

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

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

결론

  • 파이썬 인덱스는 0에서 시작합니다.
  • 반복을 통해 iterable에서 이러한 인덱스를 가져 오려면 열거 함수를 사용하십시오.
  • 관용법으로 열거 형을 사용하면 (튜플을 푸는 것과 함께) 읽기 쉽고 유지하기 쉬운 코드가 생성됩니다.

그렇게해라.

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

다음과 같은 목록에 대해 색인 자체에 액세스하려면 어떻게합니까?

ints = [8, 23, 45, 12, 78]

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




ints = [9, 23, 45, 12, 78]
ints.extend([1,2,3,4,5,6,7,8])
for idx, val in enumerate(ints):
    print(idx,val)

이렇게하면 목록을 확장 할 수 있습니다. 확장은 한 번에 여러 값을 추가 할 수 있음을 의미합니다.

이 목록을 추가하려면 아래 코드를 작성해야합니다.

ints = [9, 23, 45, 12, 78]
ints.append([1])
for idx, val in enumerate(ints):
    print(idx,val)

이렇게하면 한 번에 하나의 값을 추가 할 수 있습니다. ints.append([1]) 를 작성하면이 요소에 대한 하위 목록이 작성됩니다.




enumerate 설명하는 여러 가지 답변을 받았지만 두 목록에서 일치하는 항목에 액세스하기위한 색인 만 있으면 Python 3 : zip 에서 더 간단하고 간단하게 사용할 수 있습니다.

예를 들어, 인덱스를 사용하여 목록의 숫자에 해당하는 이름을 추출하는 경우 다음과 같이 할 수 있습니다.

ints = [8, 23, 45, 12, 78]
names = ["John", "Sue", "Johannes", "Patel", "Ian"]
for int, name = zip(ints, names):
    print("{} - {}".format(name, int)

그렇게하면

8 - John
23 - Sue
45 - Johannes
12 - Patel
78 - Ian



다음을 시도해 볼 수도 있습니다.

data = ['itemA.ABC', 'itemB.defg', 'itemC.drug', 'itemD.ashok']
x = []
for (i, item) in enumerate(data):
      a = (i, str(item).split('.'))
      x.append(a)
for index, value in x:
     print(index, value)

출력은 다음과 같습니다.

0 ['itemA', 'ABC']
1 ['itemB', 'defg']
2 ['itemC', 'drug']
3 ['itemD', 'ashok']



이 코드로 할 수 있습니다 :

ints = [8, 23, 45, 12, 78]
index = 0

for value in (ints):
    index +=1
    print index, value

루프의 끝에서 인덱스 값을 재설정해야하는 경우이 코드를 사용하십시오.

ints = [8, 23, 45, 12, 78]
index = 0

for value in (ints):
    index +=1
    print index, value
    if index >= len(ints)-1:
        index = 0



구식 방식 :

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)
>>> 



for i in range(len(ints)):
   print i, ints[i]



우선, 인덱스는 0에서 4까지입니다. 프로그래밍 언어는 0부터 세며 시작합니다. 그걸 잊어 버리거나 범위를 벗어나는 인덱스 예외를 발견하게 될 것입니다. for 루프에서 필요한 것은 0부터 4까지 세는 변수이다 :

for x in range(0, 5):

루프가 최대 값 앞에 하나의 숫자를 정지시키기 때문에 0에서 5까지 썼다는 것을 명심하십시오. :)

인덱스 사용 가치를 얻으려면

list[index]



Related