2016-07-15 23 views
0

私はPythonが初めてです。Pythonでリスト内の複数の項目にアクセスするには?

ループ内の各繰り返しでiとi + 1の項目にアクセスしたいというリストがあります。

stress = [100,110,120,130,140,150] 
stress_range = [] 

The algorithm that I used in C was: 

for (i=0, i<6; i++) 
{ 
stress_range[i] = stress[i] - stress[i+1] 
} 

私はこれをPythonで実装する方法についてはグーグルとスタックオーバーフローを行ってきましたが、役に立たなかったです。

私に助言をすることができますか、これを行うには私にドキュメントを教えてくれませんか?

ありがとうございます。 よろしく、 ケネス。

答えて

1

あなたが.appendメソッドを呼び出したときに、それ以外の場合はリストされませんので、あなたは常にあなたがstress_rangeを宣言する必要があり、Pythonで

stress_range = [] 
for i in range(len(stress)-1): 
    stress_range.append(stress[i] - stress[i+1]) 

をCを書くことができます。あるいは、

stress_range = [] 
for i, stress in enumerate(stress[1:], 1): 
    stress_range.append(stress - stress[i]) 
+0

ありがとうジェームズ、私は範囲とlenの組み合わせを試してみましたが、うまくいきませんでした。しかし、あなたの方法はエレガントで、ありがとう。 – KennethG

1

私は決してPython開発者ではなく、この問題を解決する最も最適な方法ではないかもしれません。 5分間穿孔した後、ここに解決策があります。

観光情報注:

  1. 配列の最後の要素は、モジュール関数を使用して、 配列の最初の要素を減算します。

  2. デバッグのためにprintステートメントを削除することができます。

-

stress = [100,110,120,130,140,150] 
stress_range = [] 

for index, elem in enumerate(stress): 
    current_element = elem 
    next_element = stress[(index + 1) % len(stress)] 
    print "{0}: {1}".format(current_element, next_element) 
    stress_range.append(current_element - next_element) 

print '***' 

for i in stress_range: 
    print i 

print '***' 
+0

ケビン、答えに感謝します。私は列挙しようとしましたが、私はいつもあなたがリストの長さに亘ってモジュラスを使って解決したエラーメッセージ "list index of range"を得ていたと思います。 Python Code Ninjaのレッスンをありがとう。 – KennethG

+0

ところで、私はKenny =)です。もしあなたが答えとして受け入れるなら、アップヴォートすることができれば歓迎です。 –

関連する問題