Ask Your Question
1

Concatenation of lists

asked 2020-09-28 18:22:41 +0100

Cyrille gravatar image

updated 2020-09-28 20:35:35 +0100

slelievre gravatar image

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 flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
0

answered 2020-09-28 20:26:24 +0100

slelievre gravatar image

updated 2020-09-28 20:33:14 +0100

Hoping this answers the question.

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]]
edit flag offensive delete link more

Comments

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

Cyrille gravatar imageCyrille ( 2020-09-29 06:23:31 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2020-09-28 18:22:41 +0100

Seen: 983 times

Last updated: Sep 28 '20