私はハッシュテーブルのように、異なるインデックスに値を割り当てたいが、(appendを使って)連続した方法ではない。与えられたサイズの配列を初期化するには? 私は何をすべきか:Pythonで配列を宣言する方法
a=[]
for x in range(0,10000):
a.append(0)
より良い方法はありますか? また、C++にmemset()のような関数がありますか?
私はハッシュテーブルのように、異なるインデックスに値を割り当てたいが、(appendを使って)連続した方法ではない。与えられたサイズの配列を初期化するには? 私は何をすべきか:Pythonで配列を宣言する方法
a=[]
for x in range(0,10000):
a.append(0)
より良い方法はありますか? また、C++にmemset()のような関数がありますか?
コメント欄で述べたように、ゼロの束(より専門的な使用のためのarray
モジュールがあるがない配列が、それは、Pythonのタイプではない)list
を初期化するだけである。
a = [0] * 10000
あなたは、この目的のためにmemset
に相当したい場合は、たとえば、既存のlist
の最初の1000個の要素をゼロにしたい、あなたはスライスの割り当てを使用したい:
a[:1000] = [0] * 1000
from cpython cimport array
import array
cdef array.array a = array.array('i', [1, 2, 3])
# access underlying pointer:
print a.data.as_ints[0]
from libc.string cimport memset
memset(a.data.as_voidptr, 0, len(a) * sizeof(int))
OPが実際にC配列を初期化したいという兆候はありません。また、Cythonを使用したいという兆候はまったくありません(これはCPythonと同じではありません; CPythonはCで実装された参照インタープリタを指します)。 – ShadowRanger
投稿では、「また、memset()のような関数がC++にありますか? OPが問題を解決するために使用することを選択するのは、彼の決定である。ソリューションのあなたの考えに合わないという理由だけで答えを下げることは、私の視点からは少し狭いです。しかし、私はより情報に富んだ意見に遅れるだろう。私の投稿がOPの役に立つ情報を提供していないのを見たらそれを削除します。 – armatita
OPが役に立つ答えを見つけられなくても、この質問を読んでいる誰かがそうするかもしれません。それが正当な答えであり、問題の新しい視点を提供している場合は、自由に使用でき、削除する必要はありません。 http://meta.stackoverflow.com/questions/256350/should-i-delete-my-question-if-it-got-negative-votes%3Eを参照してください。 – MANA624
あなたはいくつかの方法で指定されたサイズのリストを初期化することができますが。
Pythonにリスト内包語があり、他のリストのリストをインラインで作成します。あなたは10000個の要素(range(10000)
)のリストを作るのであれば、あなたは簡単に10000ゼロで、このリストから行うことができます:
[0 for _ in range(10000)]
これはあなたの元の溶液にかなり近いです。
おそらくより効率的なアプローチは10000によって単ゼロリストを乗算することである。
[0]*10000
両方10000ゼロでリストが得られます。
あなたは '= [0] *を行うことができます10000' – styvane
Whこれについて? 'a = [0 for range(10000)in i] ' – Valijon
これはリストです。それをするには、 'a = [0] * 10000' – zondo