私はこのワンライナーに出くわしました:
[float(n)-50 for n in range(100)]
誰かがそれが何をするのか教えてもらえますか? ベクトルの浮動小数点値を返すことになっています。
ベスト、マリウス
私はこのワンライナーに出くわしました:
[float(n)-50 for n in range(100)]
誰かがそれが何をするのか教えてもらえますか? ベクトルの浮動小数点値を返すことになっています。
ベスト、マリウス
これは、 「インデックスの各要素について、その要素をn-50に設定するように100個の要素のリストを作成する」というリスト内包表記です。n
それはリスト内包です:
リスト内包表記は、リストを作成するための簡潔な方法を提供します。一般的なアプリケーションは、各要素が別のシーケンスまたは反復可能な各メンバーに適用された操作の結果である新しいリストを作成するか、特定の条件を満たす要素のサブシーケンスを作成することです。
たとえば、次のような正方形のリストを作成するとします。
>>> squares = [] >>> for x in range(10): ... squares.append(x**2) ... >>> squares [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
次の方法でも同じ結果を得ることができます。
squares = [x**2 for x in range(10)]
これもと同等ですが
squares = map(lambda x: x**2, range(10))
、より簡潔で読みやすくなっています。
以下と同じ意味です。
[float(x) for x in range(-50, 50)]
または(少なくともPython 2では):
map(float, range(-50, 50))
リスト内包表記または関数がどのように機能するかを知っていれば、これは一目瞭然ですmap
。これらは、整数範囲-50...50
を浮動小数点数のリストに変換します (上位 50 は排他的です)。結果は次のリストです。
[-50.0, -49.0 ... 49.0]