1

サーフェス上のポイントを表すタプルのリストから始めます。

list = [(48, 228), (96, 204), (120, 192), ... ]

グリッド上に分散されているかのように、元のリストから値を呼び出すことができるように、新しいリストを作成するためのpythonicの方法は何ですか?

このような:

>>>print grid[0][0]
(48, 228)
>>>print grid[0][1]
(96, 204)
4

2 に答える 2

1

難しさはあまりわかりませんが、単純なものgrid=[list]で十分かもしれません。

高速な2D配列として使用する場合は、numpyを使用します。

import numpy as np
grid = np.array(list).reshape(1,-1)
print grid[0,1] #prints (96, 204)

データが大きくなったり、高次元になったりする場合は、常にnumpy配列を使用し、リストのリストは使用しないでください。

注意:変数を呼び出さないでください。list組み込みメソッドが非表示になりますlist

于 2013-01-20T00:01:42.080 に答える
0

これはそれを解決するリスト内包です:

l = [(48, 228), (96, 204), (120, 192), ... ]
# 'width' is the width of your bidimensional table (grid)
bidimensional = [l[a*width:(a+1)*width] for a in xrange(len(l)/width)]

説明:

[  # make a list of:
  l[a*width:(a+1)*width]
    # get the 'a'-th slice of length 'width' of the initial list
  for a in xrange(len(l)/width)  # for 'len(l)/width' slices
]

テスト:

>>> l = [(1, 11), (2, 22), (3, 33), (4, 44), (5, 55), (6, 66),(7, 77), (8, 88)]
>>> width = 2
>>> bidimensional = [l[a*width:(a+1)*width] for a in xrange(len(l)/width)]

>>> bidimensional
[[(1, 11), (2, 22)], [(3, 33), (4, 44)], [(5, 55), (6, 66)], [(7, 77), (8, 88)]]

>>> bidimensional[2][1]
(6, 66)
于 2013-01-20T00:06:46.013 に答える