[英]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]]
至於numpy
或pandas
,我不熟悉任何簡單的方法,因為子列表的長度不同。
您可以創建一個范圍列表,然后簡單地切片以獲得每個子列表 。 這個想法是為了提高效率而將循環理解內的工作最少化。
因此,一個實現將是-
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.