は、私は次のようにリストの内包を使用してリストを作成したいと:。Python:以前の値に基づいたリストの理解?
l = [100., 50., 25., 12.5, ..., a_n]
...すなわち、いくつかの数字で始まると同じリストにそのからのn「半分」を生成します。私はそれをやるための単純な方法を欠いているかもしれませんし、単にfor-loopに頼らざるを得ません。これはできますか?ありがとう。
は、私は次のようにリストの内包を使用してリストを作成したいと:。Python:以前の値に基づいたリストの理解?
l = [100., 50., 25., 12.5, ..., a_n]
...すなわち、いくつかの数字で始まると同じリストにそのからのn「半分」を生成します。私はそれをやるための単純な方法を欠いているかもしれませんし、単にfor-loopに頼らざるを得ません。これはできますか?ありがとう。
どのように?
これに等しいstart = 2500.0
n = 50
halves = [start/2.0**i for i in range(n)]
:
[start * 2.0**(-i) for i in range(n)]
おそらくあまり効率的DeepSpaceの答えが、ワンライナー
私はOPが 'n'長さのリストを生成したいと思います。 –
私は長さ変数を追加しました – DomTomCat
ジェネレータを定義し、リスト内包でそれを使用します。
def halve(n):
while n >= 1:
yield n
n /= 2
print([_ for _ in halve(100)])
>> [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625]
それとも単にリストに変換します。場合
print(list(halve(100)))
>> [100, 50.0, 25.0, 12.5, 6.25, 3.125, 1.5625]
EDIT @Rナールさんのコメントは正しいです。
def halve(start, n):
for _ in range(n):
yield start
start /= 2
print(list(halve(100, 3)))
>> [100, 50.0, 25.0]
print(list(halve(100, 4)))
>> [100, 50.0, 25.0, 12.5]
OPはn個の半分の数を意味すると思います。したがって、n = 100の場合、100個の数字のリストが返されます。 –
@とは対照的に、私はこのためにリストカンプを使用することは可能だと思うが、それはのように思えますジェネレータの良いユースケースです。 –