これはPythonで配列を宣言し反復する正しい方法ですか?各要素に定数が掛けられますか?Pythonの配列と混同します
timeArray = array([0]*1000)
for x in timeArray:
timeArray[x] = x * deltaTime
print(timeArray)
これはPythonで配列を宣言し反復する正しい方法ですか?各要素に定数が掛けられますか?Pythonの配列と混同します
timeArray = array([0]*1000)
for x in timeArray:
timeArray[x] = x * deltaTime
print(timeArray)
timeArray = [i*deltaTime for i in range(1000)]
したい内容でリストを作成します。リストへのインデックス付けには、配列と同じO(1)時間がかかります。 Pythonのリストは非常に速く、実際にはimplemented as arraysです。
構築中にアレイ/リストの内容をprint
にしてもよろしいですか?
これは新しい配列を作成しませんか? – cwallenpoole
@cwallenpoole:私のNumpyの例を参照していたら、1つの配列を構築し、その場所を変更するバージョンを投稿したばかりです。 –
OPはOPが要求したものを誤解しました。 – cwallenpoole
これはおそらく分かりにくく、必要なことをします。
timeArray = [0 for i in range(1000)]
for x in timeArray:
timeArray[x] *= deltaTime
print(timeArray)
または 'timeArray = [i *範囲(1000)内のiのdeltaTime] ' –
-1これは間違っていて、それはむしろ冗長です。 'timeArray [0] = 0'を繰り返し設定するのに4行かかり、同じ1000要素配列を1000回出力します。 @ larsmansのバージョンは素晴らしいです、答えとして投稿してください。 – delnan
@delnan:それを行った。 –
それであるあなたが本当に必要なもののように見える(脇は:
timeArray = numpy.arange(1000)
timeArray *= deltaTime
:あなたは数値演算をやっているので、あなたがより速く配列をしたい場合は、numpyの配列は、より良い選択かもしれません)数が少ない配列。組み込み配列はリストのように動作します。
#!/usr/bin/python
from array import array
timeArray = array("f", [1]*1000)
deltaTime = 2
for i, x in enumerate(timeArray):
timeArray[i] = timeArray[i] * deltaTime
print(timeArray)
# but numpy arrays behave more "naturally".
from numpy import array
timeArray = array([1]*1000, dtype="f")
print (timeArray * 2)
numpy配列は、配列のすべての要素にスカラー値を掛けます。 さらに、元の配列コードが実際に動作するかどうかはわかりません。また、配列数が非常に高速です。
基本的に配列であるが、Pythonでlistと呼ばれるデータ構造ではなく、['array'](http://docs.python.org/library/array.html)をしてもよろしいですか? – delnan
大規模なデータ構造ではリストがうまくいかないことがあります。 – kachilous
基本的なCのデータ型( 'int's、' float's、 'char'など - ドキュメントを参照してください)に相当するアイテムが何百万もある場合は、' array '。そうでない場合や、コードがまだ正しく実行されていない場合(覚えておいてください:「実行して、それを速くしてください」 - 最適化は*最後に行われます)、そのような最適化について考えるべきではありません。複雑さに敏感なリストも同様です。 – delnan