5

リスト内包表記と Lambda 関数の両方を学ぼうとしました。概念は理解していると思いますが、正の整数を入力すると恒等行列を作成するプログラムを作成するタスクが与えられました。基本的に、2 を入力すると [[1, 0],[0, 1]] となり、3 を入力すると [[1, 0, 0],[0, 1, 0], [0] となります。 、0、1]なので、リスト内にリストします。

ここで、ラムダ関数内でこれをすべて作成する必要があります。したがって、次のように入力すると:

FUNCTIONNAME(x) x 行 x 列の単位行列を取得します。

ちなみにxは常に正の整数です。

これは私がこれまでに持っているものです:

FUNCTIONNAME = lambda x: ##insertCodeHere## for i in range(1, x)

私はそれを正しくやっていると思いますが、わかりません。誰かがアイデアを持っているなら、助けてください!

4

3 に答える 3

6

どうですか:

>>> imatrix = lambda n: [[1 if j == i else 0 for j in range(n)] for i in range(n)]
>>> imatrix(3)
[[1, 0, 0], [0, 1, 0], [0, 0, 1]]

1 if j == i else 0Python の条件式の例です。

于 2013-08-15T08:08:08.230 に答える
4

これは私のお気に入りの方法です:

identity = lambda x: [[int(i==j) for i in range(x)] for j in range(x)]

True1 にFalseマップし、0にマップするという事実を利用しています。

于 2013-08-15T08:14:53.427 に答える
3

完全を期すために(そして、Pythonで数値的なことを実際にどのように行うべきかを強調するために):

import numpy
list_eye = lambda n: numpy.eye(n).tolist()

もちろん、実際には、おそらくeye(n)単独で使用し、numpy 配列を操作することになるでしょう。

于 2013-08-15T08:32:27.393 に答える