2016-09-29 4 views
0

저는 Python을 처음 사용합니다. Python 2D 동적 목록 오류

 for row in reader: 

      if (int(row[0]) <= nextWeek): 
        y[i].append(row[1]) 
      if (int(row[0]) > nextWeek): 
        i = i + 1 
        y[i].append(row[1]) 

이들은

내가 파이썬에서 사물의 종류를 acheive 할 필요가 여기에, 코드의 부분입니다, Y을 선언하는 올바른 방법은 무엇입니까?

여기에 내가 Y를 사용 = [[]],하지만 에 대한 올바른 형식이 필요 y를 기본적으로 2D 동적 목록 선언/초기화의 예와 같이 무엇인가?

+0

y를'y = []'로 초기화하면,'y.append (row [1])'로 내용을 추가합니다. 당신이하고 싶은 일을 정확하게 이해한다면'y [i] .append (...) '가 필요 없다. – pathoren

+0

나는 y = [[], [], []] 형식으로 Y가 필요하다. y [0], y [1], y [3]으로 액세스 할 수 있습니다. 하지만 그 전에는 그처럼 액세스 할 수있는 목록의 수를 초기화해야합니다. 그게 내 문제 야. 처음에는 얼마나 많은리스트가 들어 있는지 언급하지 않고, –

+0

@pathoren 내부에서 목록을 동적으로 증가시키는 데이터 구조를 가질 수 없습니까? : .. –

답변

0

나는 당신이 찾고있는 것이 기본값이라고 생각한다. 이 경우

from collections import defaultdict 
y = defaultdict(list) 
(...) 
for row in reader: 
     if (int(row[0]) <= nextWeek): 
       y[i].append(row[1]) 
     if (int(row[0]) > nextWeek): 
       i = i + 1 
       y[i].append(row[1]) 

의 defaultdict이 값은 기본적으로 목록이 될 것입니다 키와 "I"(인덱스)를 저장합니다 : 당신이있어 말할 수 있습니다. (그리고 그 중 얼마나 많은 것이 존재해야하는지 알지 못할 때 목록을 쉽게 확장 할 수 있습니다.)

+0

Google과 함께하면 하나의 요소가 하나의 목록에 포함됩니다. 이 경우가 아닙니다. 우리는 목록 (일주일)에 7 원소를 저장해야합니다. –

+0

y [0] = [2.4, 3.4, 2.3, 2.3, 1.2, 1.2, 4.5] –

+0

글쎄, 나는 무엇이 문제인지 몰라. 그때. "i"가 주말 번호 인 경우 y [i] .append (item)를 계속 호출하는 한 모든 항목이 같은 목록에 저장됩니다. 예 : y [0] .append (3) y [0] .append (11) y [0] .append (4) y [0] = [3, 11, 4] 그리고 (2.4, 3.4, 2.3, 2.3, 1.2, 1.2, 4.5) y [0] = [2.4, 전체 목록] 3.4, 2.3, 2.3, 1.2, 1.2, 4.5] – Nf4r