我正在寻找一个Python魔术方法来打包这类索引的列表
[0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4]
将每个索引分组到特定列表中:
[[0, 1, 2, 3, 4], [5, 6, 7], [8, 9], [10], [11, 12, 13]]
我已经用一个列表理解加上一个如下所示的附加循环完成了,但是我觉得有一个Python一行程序可以做到这一点。我正在处理的列表有时会超过10000个条目,所以性能很重要。你知道吗
li = [0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 3, 4, 4, 4]
result = [[] for _ in xrange(max(li)+1)]
for i in xrange(len(li)):
result[li[i]].append(i)
这可以通过以下表达式完成:
不确定这是否比其他答案更好,但我发现解决这个问题很有趣:
可以使用
itertools.groupby
对值进行分组。然后根据每个组的长度计算索引,并保留该组开始索引的运行计数。你知道吗示例
相关问题 更多 >
编程相关推荐