如何从列表中创建二维表?

时间:2013-01-19 23:55:51

标签: python list

从表示表面上的点的元组列表开始。

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

创建新列表的pythonic方法是什么,所以我们可以调用原始列表中的值,就像它们是在网格上分发一样?

像这样:

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

2 个答案:

答案 0 :(得分:1)

我真的没有看到困难,也许一个简单的grid=[list]就足够了。

如果你想把它作为一个快速的二维数组,请使用numpy:

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

如果您的数据变得更大或更高,请始终使用numpy数组,不要使用列表列表。

一句话:请不要调用变量list,它会隐藏内置方法list

答案 1 :(得分: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)