2010-08-17 65 views
24

如何擦除整個數組,使其沒有項目?擦除整個數組Python

我想這樣做,所以我可以存儲新的值(一組新的100浮點數)並找到最小值。

現在我的程序正在讀取集合中的最小值,因爲它之前的集合仍在那裏。順便說一句,我使用.append。

回答

38

請注意listarray是不同的類。你可以這樣做:

del mylist[:] 

這實際上將修改現有的名單。 David的答案創建了一個新列表並將其分配給相同的變量。你想要什麼取決於情況(例如,其他變量是否有對同一個列表的引用?)。

嘗試:

​​

a = [1,2] 
b = a 
del a[:] 

打印a和每次看到其中的差別b

+0

+1嘿,我們寫的幾乎一模一樣,但ÿ你是第一個。 – 2010-08-17 04:09:52

+0

真的,Python中有數組?我不知道。 (其實我可能知道但忘了)無論如何+1擴大了我們的答案之間的差異。我只是猜測這個差別對於OP來說並不重要。 – 2010-08-17 04:12:26

+0

我明白了。這有助於幫助 @david:對,對我來說沒有太大的區別。但是我的新鮮度已經下降:P – pjehyun 2010-08-17 04:13:59

18

很簡單:

array = [] 

將設置array是一個空列表。 (順便說一句,它們被稱爲Python中的列表,而不是數組)

如果這不適用於您,請編輯您的問題以包含演示您的問題的代碼示例。

+0

哇哈哈感謝 – pjehyun 2010-08-17 04:04:02

3

嗯,是確實存在的陣列,而當它涉及到的東西像delappend沒有他們不列出了不同:

>>> from array import array 
>>> foo = array('i', range(5)) 
>>> foo 
array('i', [0, 1, 2, 3, 4]) 
>>> del foo[:] 
>>> foo 
array('i') 
>>> foo.append(42) 
>>> foo 
array('i', [42]) 
>>> 

差異值得注意的是:你需要指定類型創建陣列時和你節省存儲在加時賽C類,當你做arr[i] = expressionarr.append(expression),並lvalue = arr[i]

1

現在來回答這個問題,也許你應該問Python類型之間轉換的費用​​,如「我獲得100 f大form形成某處;我需要把它們放在一個數組或列表之前,我找到最低」

嗎?答:不,如果somewhere是一個迭代的,而不是做這樣的:

temp = [] 
for x in somewhere: 
    temp.append(x) 
answer = min(temp) 

,你可以這樣做:

answer = min(somewhere) 

例子:

answer = min(float(line) for line in open('floats.txt'))