2017-06-21 14 views
1

私はPythonで既存の配列から新しい配列を作成しようとしています。 すでに存在する質問やそれに類する質問を読んでいますが、まだ解決できません。例えば既存の配列の新しい配列を控除する方法を作成するには

私は配列A = [4,6,9,15]を持っていると私はB =[(6-4),(9-6),(15-9)]を作成したいです。

私はこのようなループのためにそれを実行しようとしました:

deltaB=[] 
for i in range(0,len(A)): 
    deltaB[i]=A[i]-A[i-1] 
    deltaB.append(deltaB[i]) 

しかし、私は、私はPythonと一般的なプログラミングに新しいですので、コードは完全に間違って書いていますので、それはおそらく...動作しません。

私にこのコードを書いてもらえますか?先行

感謝

答えて

3

リスト内包おそらく

リストの内包使用している、これを行うための最善の方法:

[xj-xi for xi,xj in zip(A,A[1:])] 

生成:

>>> [xj-xi for xi,xj in zip(A,A[1:])] 
[2, 3, 6] 

をここに我々最初zip(..)A(リスト)とA[1:]は、リストのスライスで、最初の要素がタプルにまとめられていません。そのようなタプルのそれぞれについて、(xi,xj)を追加します。リストにxj-xiを追加します。

forループの中で、あなたは0から開始し、len(A)前に停止するので

エラーが発生したエラー、それは1から始まり、len(A)前に停止する必要があります。さらに、存在しないインデックスに最初に割り当てることはできません。直接追加する必要があります。

deltaB=[] 
for i in range(1,len(A)): 
    deltaB.append(A[i]-A[i-1]) 
関連する問題