다음 코드를 고려하십시오 :
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과 혼동하기 쉽기 때문에 사용하지 마십시오.
답변
나는 파이썬 메소드 삽입 이 당신이 찾고있는 것이라고 생각합니다 .
위치 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}