Home > Enterprise >  How to append ones to a list?
How to append ones to a list?

Time:11-12

I have the following list -

 pts1_list = [
    [224.95256042, 321.64755249],
    [280.72879028, 296.15835571],
    [302.34194946, 364.82437134],
    [434.68283081, 402.86990356],
    [244.64321899, 308.50286865],
    [488.62979126, 216.26953125],
    [214.77470398, 430.75869751],
    [299.20846558, 312.07217407],
    [266.94125366, 119.36679077],
    [384.41549683, 442.05865479],
    [475.28448486, 254.28138733]]

I would like to append ones to this so that it finally looks like this -

 pts1_list = [
    [224.95256042, 321.64755249, 1],
    [280.72879028, 296.15835571, 1],
    [302.34194946, 364.82437134, 1],
    [434.68283081, 402.86990356, 1],
    [244.64321899, 308.50286865, 1],
    [488.62979126, 216.26953125, 1],
    [214.77470398, 430.75869751, 1],
    [299.20846558, 312.07217407, 1],
    [266.94125366, 119.36679077, 1],
    [384.41549683, 442.05865479, 1],
    [475.28448486, 254.28138733, 1]]

I have tried doing the following -

for i in range(len(pts1)):
    points1_list = [pts1[i]]
    points1_list = np.append(points1_list,1)
    
print(points1_list)
print(pts1_list)

for which print(points1_list) prints out only [475.28448486, 254.28138733, 1] i.e. the last element ; whereas if I print pts1_list, it prints out all the elements in the list. How do I get points1_list to also print out all the elements in the list, with a 1 appended to it? Thanks

CodePudding user response:

Just loop through the matrix and append 1 to each list

for arr in pts1_list:
    arr.append(1)
    
print(pts1_list)

CodePudding user response:

This can be solved using list addition. Out of the other answers, this is the most commonly used, easiest, and simplest. Read up on nested list comprehension.

points1_list = [i   [1] for i in pts1_list]

CodePudding user response:

This seems like a strong use-case for Python's map function. It basically runs a function for each element in an array and returns the resulting array. There are other ways to accomplish this, but this is probably one of the cleaner (and potentially faster, depending on Python backend stuff) methods. It is easy to see how this can be expanded out to similar methods

def append_one(row):
    return row.append(1)

pts1_list = map(append_one, pts1_list)

Further reading: https://www.geeksforgeeks.org/python-map-function/

  • Related