반응형
이 반복적인 목록 증가 코드가 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)
반응형
'Programing' 카테고리의 다른 글
반응 라우터 activeClassName이 하위 경로에 대한 활성 클래스를 설정하지 않음 (0) | 2022.04.07 |
---|---|
동적 부울 속성을 VueJS 구성 요소로 전달 (0) | 2022.04.07 |
구성 요소에서 "vuetify" 전환을 사용하는 방법 (0) | 2022.04.07 |
react-router-dom v6으로 404 페이지를 작성하는 방법 (0) | 2022.04.07 |
Reducx - 스프레드 연산자를 사용하여 깊이 중첩된 스토어 소품 업데이트 (0) | 2022.04.07 |