Python Numpy:如何创建以下列表列表

时间:2017-01-03 06:08:42

标签: python numpy

我正在尝试在python中创建以下列表列表(理想情况下使用Numpy或Pandas):

[[0,1,2,3,4,5],[1,2,3,4,5],[2,3,4,5],[3,4,5],[4,5],[5]]

任何人都想要快速实现这个目标吗?

2 个答案:

答案 0 :(得分:7)

>>> [range(i,6) for i in range(6)]
[[0, 1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [2, 3, 4, 5], [3, 4, 5], [4, 5], [5]]

至于做numpypandas,我不熟悉任何简单的方法,因为子列表的长度不同。

答案 1 :(得分:2)

您可以创建范围列表并简单地切片以获取每个子列表。为了提高效率,我们的想法是尽量减少循环理解中的工作。

因此,实现将是 -

def reducing_ranges(n):
    r = range(n)
    return [r[i:] for i in r]

示例运行 -

>>> reducing_ranges(6)
[[0, 1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [2, 3, 4, 5], [3, 4, 5], [4, 5], [5]]

运行时测试 -

In [38]: %timeit [range(i,6) for i in range(6)] # @Akavall's soln
100000 loops, best of 3: 2.65 µs per loop

In [39]: %timeit reducing_ranges(6)
100000 loops, best of 3: 1.75 µs per loop

In [40]: %timeit [range(i,1000) for i in range(1000)] # @Akavall's soln
100 loops, best of 3: 9.96 ms per loop

In [41]: %timeit reducing_ranges(1000)
100 loops, best of 3: 2.96 ms per loop