2016-09-29 54 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]) 

這些代碼的部分,在這裏我要達致這樣的Python中的東西,什麼是宣佈Ÿ的正確方法是什麼?

在這裏,我用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

我認爲你正在尋找的是一個defaultdict。 比方說,你已經有了:

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將存儲在「我」(指數)作爲重點,其中的值將成爲默認的列表。 (因此當不知道應該存在多少個時,很容易擴展列表)。

+0

如果我們這樣做,那麼我們將在一個列表中有一個元素。我們需要在列表中存儲7個元素(一週) –

+0

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

+0

嗯,我不知道什麼問題然後。如果「我」是週末號碼,那麼只要你一直打電話給y [i] .append(item),所有的項目都會在同一個列表中結束。 ex:y [0] .append(3)y [0] .append(11)y [0] .append(4)y [0] = [3,11,4] 如果要放置整個列表,只需使用: y [0] .extend(list) y [0] .extend([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