Python | Add list elements with a multilist based on index (original) (raw)
Given two lists, one is a simple list and second is a multi-list, the task is to add both lists based on index.
Example:
Input: List = [1, 2, 3, 4, 5, 6] List of list = [[0], [0, 1, 2], [0, 1], [0, 1], [0, 1, 2], [0]]
Output: [[1], [2, 3, 4], [3, 4], [4, 5], [5, 6, 7], [6]]
Explanation: [1] = [1+0] [2, 3, 4] = [0+2, 1+2, 2+2] [3, 4] = [3+0, 3+1] [4, 5] = [4+0, 4+1] [5, 6, 7] = [5+0, 5+1, 5+2] [6] = [6+0]
Let’s discuss some methods to do this task.
Method #1: Using iteration
Python3
List
=
[
1
,
2
,
3
,
4
,
5
,
6
]
List_of_List
=
[[
0
], [
0
,
1
,
2
], [
0
,
1
],
`` [
0
,
1
], [
0
,
1
,
2
], [
0
]]
Output
=
[]
for
x
in
range
(
len
(
List
)):
`` temp
=
[]
`` for
y
in
List_of_List[x]:
`` temp.append(y
+
List
[x])
`` Output.append(temp)
print
("Initial
list
is
:",
List
)
print
("Initial
list
of
list
is
:", List_of_List)
print
("Output
is
", Output)
Output:
Initial list is: [1, 2, 3, 4, 5, 6] Initial list of list is : [[0], [0, 1, 2], [0, 1], [0, 1], [0, 1, 2], [0]] Output is [[1], [2, 3, 4], [3, 4], [4, 5], [5, 6, 7], [6]]
Time Complexity: O(n*n) where n is the number of elements in the list
Auxiliary Space: O(n), where n is the number of elements in the new output list
Method #2: Using enumerate()
Python3
List
=
[
1
,
2
,
3
,
4
,
5
,
6
]
List_of_List
=
[[
0
], [
0
,
1
,
2
], [
0
,
1
], [
0
,
1
], [
0
,
1
,
2
], [
0
]]
Output
=
[]
Output
=
[[elem
+
List
[x]
for
elem
in
y]
`` for
x, y
in
enumerate
(List_of_List)]
print
("Initial
list
is
:",
List
)
print
("Initial
list
of
list
is
:", List_of_List)
print
("Output
is
", Output)
Output:
Initial list is: [1, 2, 3, 4, 5, 6] Initial list of list is : [[0], [0, 1, 2], [0, 1], [0, 1], [0, 1, 2], [0]] Output is [[1], [2, 3, 4], [3, 4], [4, 5], [5, 6, 7], [6]]
Time Complexity: O(n*n), where n is the length of the list test_list
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the res list
Method #3: Using Zip()
Python3
List
=
[
1
,
2
,
3
,
4
,
5
,
6
]
List_of_List
=
[[
0
], [
0
,
1
,
2
], [
0
,
1
], [
0
,
1
], [
0
,
1
,
2
], [
0
]]
Output
=
[]
Output
=
[[z
+
x
for
z
in
y ]
for
x, y
in
`` zip
(
List
, List_of_List)]
print
("Initial
list
is
:",
List
)
print
("Initial
list
of
list
is
:", List_of_List)
print
("Output
is
", Output)
Output:
Initial list is: [1, 2, 3, 4, 5, 6] Initial list of list is : [[0], [0, 1, 2], [0, 1], [0, 1], [0, 1, 2], [0]] Output is [[1], [2, 3, 4], [3, 4], [4, 5], [5, 6, 7], [6]]
Time Complexity: O(n*n), where n is the length of the list test_list
Auxiliary Space: O(n) additional space of size n is created where n is the number of elements in the list
Method #4: Using map()
In this code, we are using the map() function to add the corresponding elements of the two lists, List and List_of_List. The map() function applies the lambda function on each element of the two lists, which adds the element of List to each element of the sublists in List_of_List.
The lambda function has two parameters, x and y, which represent the current element of List and the current sublist of List_of_List, respectively. The lambda function returns a new list which is the sublist of List_of_List with each element incremented by the corresponding element of List.
Finally, the map() function is wrapped in a call to list() to convert the map object returned by map() into a list.
Python3
List
=
[
1
,
2
,
3
,
4
,
5
,
6
]
List_of_List
=
[[
0
], [
0
,
1
,
2
], [
0
,
1
], [
0
,
1
], [
0
,
1
,
2
], [
0
]]
Output
=
[]
Output
=
list
(
map
(
lambda
x, y: [z
+
x
for
z
in
y],
List
, List_of_List))
print
(
"Initial list is:"
,
List
)
print
(
"Initial list of list is :"
, List_of_List)
print
(
"Output is"
, Output)
Output
Initial list is: [1, 2, 3, 4, 5, 6] Initial list of list is : [[0], [0, 1, 2], [0, 1], [0, 1], [0, 1, 2], [0]] Output is [[1], [2, 3, 4], [3, 4], [4, 5], [5, 6, 7], [6]]
The time complexity of this approach is O(n), where n is the length of the lists. The auxiliary space is also O(n), as we are creating a new list of the same size as the original lists.
Method #5: Using nested list comprehension
Python3
List
=
[
1
,
2
,
3
,
4
,
5
,
6
]
List_of_List
=
[[
0
], [
0
,
1
,
2
], [
0
,
1
],
`` [
0
,
1
], [
0
,
1
,
2
], [
0
]]
Output
=
[[y
+
List
[x]
for
y
in
sublist]
for
x, sublist
in
enumerate
(List_of_List)]
print
(
"Initial list is:"
,
List
)
print
(
"Initial list of list is :"
, List_of_List)
print
(
"Output is"
, Output)
Output
Initial list is: [1, 2, 3, 4, 5, 6] Initial list of list is : [[0], [0, 1, 2], [0, 1], [0, 1], [0, 1, 2], [0]] Output is [[1], [2, 3, 4], [3, 4], [4, 5], [5, 6, 7], [6]]
Time Complexity: O(n)
Auxiliary Space: O(n)