2014-12-03 2 views
1

최근에 나는 파이썬을 사용하기 시작했고, 나는 언어의 많은 것들로 여전히 초보자입니다. 이 코드 조각은 여러 텍스트 파일 (2t1, ..., 2t19,3t1, ..., 3t19)에서 imput으로 취하는 세리 행 (예 : [47.815, 47.54, 48.065, 57.45] 파일이 끝난 후 파일 이름이 표시됩니다. 모든 파일 (각 파일에 대한 ~ 12000 요소의 총 ~ 80 행, 4 개 요소 각 행에) 저장해야합니다 (80 개) 요소IndexError :리스트 할당 인덱스가 범위를 벗어남 - 배열이있는 파이썬

for i in range(2,3): 
for j in range(1,19): 
    #Open a text file and convert the row content to float: 
    for line in open('[Path]/%dt%d.txt' % (i,j)): 
    # Ignore comments: 
     if not line.startswith('#'): 
      # Got a valid data line: 
       row[i][j] = [float(item) for item in line.split()] 
       print (row[i][j]) 
    print (' %dt%d \n' %(i,j)) 

그냥 때까지 내가 그것을 물어 무엇을 할 수 있지만이있다 2t5하고 다음이 메시지가 표시됩니다 : 내가 목록이 최대의로 작성되지 추측

Traceback (most recent call last):

File "< tmp 1>", line 8, in < module>

row[i][j] = [float(item) for item in line.split()]

IndexError: list assignment index out of range

정말 문제가 무엇을 알아낼 수 없습니다 (나는 온라인으로 읽을 수는 500.000.000 공백이 있음) , 나는 무엇이 잘못되었을지를 볼 수 없다. 이 오류는 작업중인 목록이 비어 있지만 이중 검사를하고 모든 파일이있을 때 나타납니다. 그러나 또한 row[i][j].append(float(item) for item in line.split()) (이는 가장 일반적인 실수에 대한 해결책입니다)로 시도해 보면 정말 긴 목록을 돌려줍니다. 이 :

< generator object < genexpr> at 0x000000000XXXXXXX>

(X는 다른 숫자 임) 같은 오류로 끝납니다.

p.s. 내가 일하고있는 데이터가 필요하다면 물어 보겠습니다.

+2

이제부터 언어'python' 전화'Phyton' –

+1

어떻게 처음'row'을 할당 할 수 없습니다하십시오 동일한 구문을 사용할 수 있습니까? 분명히 충분한 항목이 없습니다. – interjay

+0

@interjay 초기화/선언하지 않았습니다. 코드는 100 % 광산이 아니며 내가 가져간 곳과 같았습니다. 또한 파이썬 변수를 선언 할 필요가없는 것 같아요 (그건 내 설명서를 말합니다). – Protolando

답변

2

문제는 매우 간단합니다. 당신은 아마 목록 row 이름을 가지고 있고 당신은 당신이 행 목록에 새 목록을 추가하지만 난 당신이

을 수행 할 생각 같은 경우 존재하지 않는 인덱스

>>> row = [] 
>>> row[0] = 1 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: list assignment index out of range 

에 값을 할당하려는

>>> row = [] 
>>> row.append([1, 2, 3, 4]) 
>>> row 
[[1, 2, 3, 4]] 
>>> row[0][0] 
1 

괜찮습니다. 당신은 트리플 둥지 일

>>> row = [] 
>>> row.append([[1,2,3,4]]) 
>>> row 
[[[1, 2, 3, 4]]] 
>>> row[0].append([-1, -2, -3, -4]) 
>>> row 
[[[1, 2, 3, 4], [-1, -2, -3, -4]]] 

하려는 경우 당신은

관련 문제