据我所知,Python列表没有预定义的大小,而是随着更改的进行而增长和收缩。所以,您要做的是找到列表中最大的索引值,或者foo = [x[0] for x in list_of_pairs]
将访问主列表中每个列表的第一个索引,名为list_of_pairs。请注意,此策略也适用于基于tuple的列表。在
In [186]: a = np.array([[3,350],[4,800],[0,150],[0,200],[4,750]])
In [187]: res = pd.DataFrame(a).groupby(0)[1].apply(list).to_frame('val').rename_axis('idx')
In [188]: res
Out[188]:
val
idx
0 [150, 200]
3 [350]
4 [800, 750]
>>> l = [[3,350],[4,800],[0,150],[0,200],[4,750]]
>>> d = {}
>>> for row, num in l:
... d.setdefault(row, []).append(num)
...
>>> [d.get(i, []) for i in range(max(d.keys()) + 1)]
[[150, 200], [], [], [350], [800, 750]]
试着看看列表理解,它们提供了创建列表的一种简单方法。如果你不知道他们是什么,这是一个相当不错的指南,让你开始here。另外,看看
tuple
,因为它们更适合成对值,而不是列表。注意元组是不可变的,因此一旦创建元组就不能进行更改。在使用元组的列表如下所示
据我所知,Python列表没有预定义的大小,而是随着更改的进行而增长和收缩。所以,您要做的是找到列表中最大的索引值,或者
foo = [x[0] for x in list_of_pairs]
将访问主列表中每个列表的第一个索引,名为list_of_pairs
。请注意,此策略也适用于基于tuple
的列表。在下面应该做你想做的
^{pr2}$我将使用pandas模块执行此任务:
现在您有了一个索引数据集,可以按以下方式使用它:
^{pr2}$PS我认为你不必在结果数据集中保留空列表-因为这是浪费资源
正如@thefourtheye所说,
dict
可能是更好的容器。如果你想要2dlist,你可以先添加一个中间值dict
,其中key是行,value是数字列表。然后您可以使用列表理解来生成最终结果:相关问题 更多 >
编程相关推荐