簡體   English   中英

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

[英]Python Numpy: How to create the following list of lists

我正在嘗試在python中創建以下列表列表(理想情況下是Numpy或Pandas):

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

任何人都有實現該目標的快速方法的想法?

>>> [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 ,我不熟悉任何簡單的方法,因為子列表的長度不同。

您可以創建一個范圍列表,然后簡單地切片以獲得每個子列表 這個想法是為了提高效率而將循環理解內的工作最少化。

因此,一個實現將是-

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM