我想創建列表下面列出的下面的列表中,蟒蛇(與numpy的或熊貓最好):的Python NumPy的:如何創建列表
[[0,1,2,3,4,5],[1,2,3,4,5],[2,3,4,5],[3,4,5],[4,5],[5]]
。
任何人有一個快速的方法來實現的想法?
我想創建列表下面列出的下面的列表中,蟒蛇(與numpy的或熊貓最好):的Python NumPy的:如何創建列表
[[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
好吧,是的,我在想有什麼東西要與實現對角陣列,但您的解決方案是完美的。 –
是的,熊貓數據框需要一個類似於表格的數據結構,而不是這個不平衡的列表。我熟悉numpy數組,但我認爲一個簡單的python列表效果最好。 –