python - How do I repeatedly shift and pad elements in a list to get a list of lists? -
i have list a = [1, 2, 3, ..., n] , want repeatedly shift list list of lists. first row should a , second row [2, 3, 4, ...] , third row [3, 4, 5, ...] , until last row [n, 0, 0, ...] . missing elements in last columns should zeros. trying put them individually, n >= 100 manually padding zeros take long. how do this? edit same question numpy arrays, have. >>> = [1, 2, 3, 4] >>> [ a[i:] + i*[0] in range(len(a))] [[1, 2, 3, 4], [2, 3, 4, 0], [3, 4, 0, 0], [4, 0, 0, 0]] how works to i'th shifted list, can use: a[i:] + i*[0] . list comprehension repeatedly i's need. using numpy + means different numpy arrays normal python lists. consequently, above code needs tweaks adapt numpy: >>> import numpy np >>> = np.arange(1, 5) >>> [ np.concatenate((a[i:], np.zeros(i))) in range(len(a))] [array([1, 2, 3, 4]), array([2, 3, 4, 0]), array([3, 4, 0, 0]), array([4, 0, 0, 0])] if want final result numpy array: ...