【发布时间】:2022-01-23 18:09:57
【问题描述】:
我在一段代码中遇到了一个瓶颈,它破坏了我的代码性能。我重新编写了该部分,但是在计时之后,情况并没有改善。
问题如下。给定一个固定长度的整数列表
data = [[1,2,3], [3,2,1], [8,1,0], [1,3,4]]
我需要将每个子列表的索引附加到单独的列表中,其次数与其在给定列索引处的列表值一样多。数据中的每一列都有一个单独的列表。
例如,对于上述数据,将有三个结果列表,因为子列表具有三列。
有 4 个子列表,因此我们希望数字 0-3 出现在每个最终列表中。
我们期望从以上数据生成以下三个列表
[[0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3],
[0, 0, 1, 1, 2, 3, 3, 3],
[0, 0, 0, 1, 3, 3, 3, 3]]
我有两种方法:
processed_data = list([] for _ in range(len(data[0])))
for n in range(len(data)):
sub_list = data[n]
for k, proc_list in enumerate(processed_data):
for _ in range(sub_list[k]):
proc_list.append(n)
processed_data = []
for i, col in enumerate(zip(*data)):
processed_data.append([j for j,count in enumerate(col) for _ in range(count)])
data 列表的平均大小约为 100,000。
有什么方法可以加快速度吗?
【问题讨论】:
标签: python python-3.x list