Programing

이 반복적 인리스트 증가 코드가 왜 IndexError :리스트 할당 인덱스가 범위를 벗어 납니까?

lottogame 2020. 5. 26. 07:42
반응형

이 반복적 인리스트 증가 코드가 왜 IndexError :리스트 할당 인덱스가 범위를 벗어 납니까?


다음 코드를 고려하십시오 :

i = [1, 2, 3, 5, 8, 13]
j = []
k = 0

for l in i:
    j[k] = l
    k += 1

print j

출력 (Win 7 32 비트의 Python 2.6.6)은 다음과 같습니다.

> Traceback (most recent call last): 
>     j[k] = l IndexError: list assignment index out of range

나는 그것이 이해하지 못하는 단순한 것 같아요. 누군가 그것을 정리할 수 있습니까?


j는 빈 목록이지만 [0]아직 존재하지 않는 첫 번째 반복에서 요소 쓰려고합니다 .

대신 목록 끝에 새 요소를 추가하려면 다음을 시도하십시오.

for l in i:
    j.append(l)

다른 옵션은 초기화하는 것입니다 j.

j = [None] * len(i)

수행 j.append(l)대신 j[k] = l하고 피하기는 k전혀.


당신은 또한 목록 이해를 사용할 수 있습니다 :

j = [l for l in i]

또는 진술을 사용하여 사본을 만드십시오.

j = i[:]

j.append(l)

또한 소문자 "L"은 1과 혼동하기 쉽기 때문에 사용하지 마십시오.


나는 파이썬 메소드 삽입 이 당신이 찾고있는 것이라고 생각합니다 .

위치 i에 요소 x를 삽입합니다. list.insert (i, x)

array = [1,2,3,4,5]

array.insert(1,20)

print(array)

# prints [1,2,20,3,4,5]

j에 대한 사전 (연관 배열과 유사)을 사용할 수 있습니다.

i = [1, 2, 3, 5, 8, 13]
j = {} #initiate as dictionary
k = 0

for l in i:
    j[k] = l
    k += 1

print j

인쇄합니다 :

{0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13}

한 가지 더 방법 :

j=i[0]
for k in range(1,len(i)):
    j = numpy.vstack([j,i[k]])

이 경우 jnumpy 배열이됩니다.


배열이있는 파이썬에서는 배열에 요소를 추가하고 추가 할 수 있습니다


아마 당신은 extend () 가 필요할 것입니다

i=[1,3,5,7]
j=[]
j.extend(i)

j를 빈 목록으로 지정하고 루프에서 j의 0 번째 색인 값을 찾으려고 시도하는 것은 확실하게 작동하지 않습니다. j.append (l) 사용해보십시오. 작동합니다.

참고 URL : https://stackoverflow.com/questions/5653533/why-does-this-iterative-list-growing-code-give-indexerror-list-assignment-index

반응형