2011-01-28 85 views
2

我將如何去做一個函數,以在運行時根據初始用戶輸入創建一定數量的唯一命名變量?例如,用戶輸入的尺寸爲400 x 400,(x和y),所以我希望函數創建1600(400 * 400)個變量,每個變量代表網格400上的每個不同點的400個。運行時變量創建Python 3.1.2

回答

2

什麼你真的想要的是一個數組,400 * 400點的列表或元組。

因此,創建一個類,用於存儲每個點所需的信息,然後創建這些類對象的大小爲400 * 400的列表。

你可以這樣來做:

width = 400 
height = 400 
m = [[0]*width for i in range(height)] 

然後接入點在你的領域,像這樣:

m[123][105] = 7 

設定點(123105)至7

如果您想要在每個點上存儲不止一個數字,請按照我的建議創建課程:

class MyClass: 
    def __init__(self, a, b, c): 
     self.a = a 
     self.b = b 
     self.c = c 

,然後再製作像這樣「MyClass的」對象列表:

​​
+0

甜。謝謝,我應該能夠將其實現到我的代碼中。 – Justin

+0

很酷。我喜歡綠色的複選標記:) – Olhovsky

+0

一個數組不是一個元組,也不是一個列表。元組是不可變的,並且具有固定的長度。列表是可變的,但具有動態長度。一個數組是可變的,並且(通常)具有一個靜態長度。 (後者是由於一個大固體塊的底層結構使得插入和刪除成本相當高昂)。 – Stigma

1

你確定你需要創建一個不同的變量在網格中的每個點?如果有很多默認值爲0的點,請不要使用一堆0來創建數組。相反,請創建一個空字典D = {}。將數據存儲爲D[(x,y)] = anything。通過D.get((x,y), 0)訪問您的數據。其中D.get(key, default value)這節省了內存。

順便說一句,400 * 400不是1600.而是160,000