我正在嘗試構建計數的直方圖...所以我創建了桶。 我知道我可以只經歷並追加了一堆零即沿着這些路線的東西:如何在python(或特定大小的數組)中聲明零數組
buckets = []
for i in xrange(0,100):
buckets.append(0)
有沒有更優雅的方式來做到這一點?我覺得應該有一種方法來聲明一個特定大小的數組。
我知道numpy的具有numpy.zeros
但我想更通用的解決方案
我正在嘗試構建計數的直方圖...所以我創建了桶。 我知道我可以只經歷並追加了一堆零即沿着這些路線的東西:如何在python(或特定大小的數組)中聲明零數組
buckets = []
for i in xrange(0,100):
buckets.append(0)
有沒有更優雅的方式來做到這一點?我覺得應該有一種方法來聲明一個特定大小的數組。
我知道numpy的具有numpy.zeros
但我想更通用的解決方案
buckets = [0] * 100
小心 - [這種技術不推廣到多維數組或列表](https://docs.python.org/2/faq/programming.html#how-do -i創建-A-多維列表)。 – rphv 2016-02-20 02:12:31
您可以通過一個整數n
乘以list
重複list
n
時間:
buckets = [0] * 100
最簡單的解決辦法be
"\x00" * size # for a buffer of binary zeros
[0] * size # for a list of integer zeros
一般而言,您應該使用更多的pythonic代碼,如列表理解(在您的示例中:[0 for unused in xrange(100)]
)或使用string.join
作爲緩衝區。
對不起,但明確排除了numpy.zeros。 – 2012-02-02 16:28:48
取決於你它的採集後實際上是要與數據做的,collections.defaultdict(INT)可能是有用的。
使用此:
bucket = [None] * 100
for i in range(100):
bucket[i] = [None] * 100
OR
w, h = 100, 100
bucket = [[None] * w for i in range(h)]
他們都將輸出適當的空多維水桶名單100x100的
'bucket = [[0] * w] * h'呢? – RobinHood 2016-07-12 16:18:01
只是爲了完整性:要聲明的python零的多維列表你必須使用這樣的列表理解:
buckets = [[0 for col in range(5)] for row in range(10)]
以避免行之間的引用共享。
這看起來比chester1000的代碼更笨拙,但如果值稍後應該改變,它是必不可少的。有關更多詳細信息,請參閱Python FAQ。
是的,你是對的,除非出於某種奇怪的原因,你想在同一陣列的n個副本上進行操作:) – meeDamian 2012-02-06 08:35:34
嗯,我想通過發佈示例程序和它的輸出
計劃,以幫助你: -
t=input("")
x=[None]*t
y=[[None]*t]*t
for i in range(1,t+1):
x[i-1]=i;
for j in range(1,t+1):
y[i-1][j-1]=j;
print x
print y
輸出: -
2
[1, 2]
[[1, 2], [1, 2]]
我希望這清除了一些非常基本的你的關於他們的聲明的概念。用其他特定值初始化它們,例如用0初始化它們。你可以聲明爲:
X = [0] * 10
希望它可以幫助.. !! ;)
如果你需要更多的列:
buckets = [[0., 0., 0., 0., 0.] for x in range(0)]
的問題說 「如何申報零的陣列...」 但隨後的示例代碼引用Python列表:
buckets = [] # this is a list
然而,如果有人想真正初始化數組,我建議:
from array import array
my_arr = array('I', [0] * count)
Python的純粹主義者可能會聲稱這是不是Python的和建議:
my_arr = array('I', (0 for i in range(count)))
的Python的版本是非常緩慢的,當你有幾百個陣列成千上萬值來進行初始化,所不同的是相當明顯。
Python的列表是列表,而不是數組。在Python中,你不像C中那樣聲明一些東西:你定義函數和類(通過def和class語句),然後賦值給變量,如果它們不存在的話,它們會在第一次賦值時神奇地創建。另外,變量(和列表)不是包含對象的名稱,而是包含名稱的內存區域。一個對象只能包含在一個存儲器區域中,但可以被幾個名稱引用。 – pillmuncher 2010-10-30 01:10:52
Python沒有「聲明」,尤其是具有大小但未指定內容的容器。你想要的東西,你寫一個表達式。 – 2010-10-30 01:14:55
...和分號完全不必要 – bstpierre 2010-10-30 02:03:52