Programing

이 반복적인 목록 증가 코드가 IndexError: 목록 할당 인덱스를 범위를 벗어나는 이유는?

c10106 2022. 4. 7. 20:45
반응형

이 반복적인 목록 증가 코드가 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 = list(i)

또는 Python 목록을 다른 언어의 배열처럼 사용하려면 해당 요소가 null 값으로 설정된 목록을 미리 생성하십시오(None아래 예) 및 이후 특정 위치의 값을 덮어쓰십시오.

i = [1, 2, 3, 5, 8, 13]
j = [None] * len(i)
#j == [None, None, None, None, None, None]
k = 0

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

깨달아야 할 것은...list객체는 존재하지 않는 인덱스에 값을 할당하는 것을 허용하지 않는다.

다른 옵션은 초기화하는 것이다.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과 혼동하기 쉬우므로 사용하지 마십시오.

Python 메서드 인서트가 당신이 찾고 있는 것이라고 생각한다.

i. list.insert(i,x) 위치에 요소 x 삽입

array = [1,2,3,4,5]
# array.insert(index, element)
array.insert(1,20)

print(array)

# prints [1,20,2,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]])

이 경우j무미건조한 배열이 될 것이다.

연장()이 필요할지도 모른다.

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

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

반응형