I have the following list:
l = [5, 6, 7, 1]
I need to populate this list with the first value (i.e. 5) so that the length of this list becomes equal to 10.
Expected result:
l_extended = [5, 5, 5, 5, 5, 5, 5, 6, 7, 1]
I can do it in for loop:
fixed_val = l[0]
len_diff = 10 - len(l)
l_extended = []
for n in range(len_diff):
l_extended.append(fixed_val)
for n in range(len_diff,10):
l_extended.append(l[n-len_diff])
But is there any shorter way to do it?
CodePudding user response:
Also consider
a = [1,2,3]
a_extended = [ a[0] ] * ( 10-len(a) ) a
Explanation:
a[0] grabs the first element
(10-len(a)) is the number of characters we need to add to get the length to 10
In Python, you can do [1] * 3 to get [1,1,1], so:
[a[0]] * (10-len(a)) repeats the first element by how many extra elements we need
In python, you can do [1,2,3] [4,5,6] to get [1,2,3,4,5,6], so:
[a[0]]*(10-len(a)) a adds the extra elements onto the front of the list
CodePudding user response:
The shortest way is probably
l_extended = [*[l[0]]*(10 - len(l)), *l]
CodePudding user response:
I'd suggest:
lst_extended = [lst[0]] * (to_len - len(lst)) lst
[lst[0]] * some_number: an array containing some_number of the first element of your starting list.
to_len - len(lst): how long the first part of the new list needs to be. So if you want a list of 6 elements from a list of 4 elements, you need 2 extra elements.
some_list lst: join two lists together.
I prefer lst to l because it looks less like 1 and I.
