1

次の構造を持つ bmp イメージを表す変数があります。

image=[line1, line2, ... linen] 
line=[pix1,pix2,...,pixn]
pix=[r,g,b]

したがって、たとえば、この変数の内容は次のようになります

[[[0,0,0],[1,0,1],[2,4,5]],[[3,4,5],[1,7,4],[1,3,5]],[[2,4,2],[1,6,7],[1,9,0]]]

ここで、各項目の pix-list をタプルに変換したいので、内容は次のようになります。

[[(0,0,0),(1,0,1),(2,4,5)],[(3,4,5),(1,7,4),(1,3,5)],[(2,4,2),(1,6,7),(1,9,0)]]

私はこれを行うことができます

for i in range(0,len(image)-1):
   for j in range(0,len(image[0])-1):
      image[i][j] = tuple(image[i][j])

しかし、これはそれを行うための最も「pythonesque」な方法ではないようであり、可能な限り最速の計算方法が必要です。これは上記とはほど遠いようです。

で試してみました

[tuple(pix) for pix in line for line in image]

私はこれがより速いはずだと思っていましたが、もちろん上記は惨めに失敗します。

それで、pixのサブリストを可能な限り最速の方法でタプルに変換するのを手伝ってくれる人はいますか? 前もって感謝します。

4

2 に答える 2

4
[[tuple(pix) for pix in line] for line in image]
于 2012-06-19T19:57:16.990 に答える
4

これはどう:

[map(tuple, line) for line in image]

また、完全を期すためにコメントを含めます。map がジェネレーターである Python 3.x では、次を使用します。

[list(map(tuple, line)) for line in image]
于 2012-06-19T19:54:33.267 に答える