私はいくつかのリターン計算を行っており、以下を可能な限りエレガントに実行したいと思いますが、リスト内包表記に関する私の知識は十分ではありません。(リストxは、4つの要素だけでなく、任意の長さにすることができます。要素は浮動小数点数です)。
x = [a, b, c, d]
y = [(a-b)/b, (b-c)/c, (c-d)/d]
ありがとう!
これはもっともらしいですね。
>>> x = [1.,2.,3.,4.]
>>> [ ((e-f)/f) for e,f in zip ( x[:-1], x[1:]) ]
[-0.5, -0.3333333333333333, -0.25]
リスト内包表記は常に最善の方法であるとは限らず、よりクリーンなコードを作成することを目的とした構文上のショートカットにすぎません。あなたのような複雑な操作には、古い方法をお勧めします。経験則として、あなたがそれを書くのに苦労するならば、他の人は確かにそれを読むのに苦労するだろうと私はいつも思います。
とにかく、これを行うための2つの可能な方法があります:
リスト内包表記を使用したPythonの方法:
y = [(x[i] - x[i + 1]) / x[i + 1] for i in xrange(len(x - 1))]
昔ながらの方法:
y = []
for i in range(len(x - 1)):
a = x[i]
b = x[i + 1]
y.append((a - b) / b)
zip
他の人が提案したように使用することができます、または
[(x[i]-x[i+1])/x[i+1] for i in range(len(x)-1)]
これを試して:
y = [(x[i-1]-x[i])/x[i] for i in range(1,len(x))]
お役に立てれば!