# Concatenation of lists

Starting from a list of lists and some extra lists, I want to combine them in various ways.

Suppose I have the following lists:

• a list of lists

A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

• two extra lists

U = [100, 200, 300]
V = [40, 50, 60]


How to extend A using U and V to obtain

B = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [100, 200, 300]]
C = [[1, 2, 3, 100], [4, 5, 6, 200], [7, 8, 9, 300]]
D = [[1, 2, 3, 100], [4, 5, 6, 200], [7, 8, 9, 300], [40, 50, 60, a]]


for a given a.

I have the same question with matrices and vectors.

And is there a mechanism to go back to lists from matrices and vectors?

edit retag close merge delete

Sort by ยป oldest newest most voted

Starting point

• a list of lists:

sage: A = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

• two extra lists

sage: U = [100, 200, 300]
sage: V = [40, 50, 60]


Combined forms

sage: B = A + [U]
sage: B
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [100, 200, 300]]

sage: C = [a + [u] for a, u in zip(A, U)]
sage: C
[[1, 2, 3, 100], [4, 5, 6, 200], [7, 8, 9, 300]]

sage: a = SR.var('a')
sage: D = C + [V + [a]]
sage: D
[[1, 2, 3, 100], [4, 5, 6, 200], [7, 8, 9, 300], [40, 50, 60, a]]


Using matrices and vectors:

sage: A = matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
sage: A
[1 2 3]
[4 5 6]
[7 8 9]

sage: U = vector([100, 200, 300])
sage: U
(100, 200, 300)

sage: B = matrix(A.rows() + [U])
sage: B
[  1   2   3]
[  4   5   6]
[  7   8   9]
[100 200 300]

sage: C = A.augment(U)
sage: C
[  1   2   3 100]
[  4   5   6 200]
[  7   8   9 300]


From a matrix to a list of vectors:

sage: C_rows = C.rows()
sage: C_rows
[(1, 2, 3, 100), (4, 5, 6, 200), (7, 8, 9, 300)]


From a matrix to a list of lists:

sage: C_list_of_lists = [list(row) for row in C]
sage: C_list_of_lists
[[1, 2, 3, 100], [4, 5, 6, 200], [7, 8, 9, 300]]

more

Great answer, very usefull. But obviously impossible to find without your help. Thanks.

( 2020-09-29 06:23:31 +0200 )edit