Python | Adding value to sublists (original) (raw)
Sometimes, we just have to manipulate a list of lists by appending a similar value to all the sublists. Using a loop for achieving this particular task can be an option but sometimes leads to sacrificing the readability of code. It is always wanted to have a oneliner to perform this particular task. Let’s discuss certain ways in which this can be done.
Method #1: Using list comprehension can be used to perform this particular task using a similar looping construct but in just a single line. This increases code readability.
Python3
test_list
=
[[
1
,
3
], [
3
,
4
], [
6
,
5
], [
4
,
5
]]
print
(
"The original list : "
+
str
(test_list))
K
=
"GFG"
res
=
[[i, j, K]
for
i, j
in
test_list]
print
(
"The list after adding element : "
+
str
(res))
Output
The original list : [[1, 3], [3, 4], [6, 5], [4, 5]] The list after adding element : [[1, 3, 'GFG'], [3, 4, 'GFG'], [6, 5, 'GFG'], [4, 5, 'GFG']]
Time complexity: O(n), where n is the number of elements in the original list (test_list).
Auxiliary space: O(n), as a new list (res) is created with the same number of elements as the original list.
Method #2 : Using list comprehension + “+” operator This method is quite similar to the above method, but the difference is that plus operator is used to add the new element to each sublist.
Python3
test_list
=
[[
1
,
3
], [
3
,
4
], [
6
,
5
], [
4
,
5
]]
print
(
"The original list : "
+
str
(test_list))
K
=
"GFG"
res
=
[sub
+
[K]
for
sub
in
test_list]
print
(
"The list after adding element : "
+
str
(res))
Output
The original list : [[1, 3], [3, 4], [6, 5], [4, 5]] The list after adding element : [[1, 3, 'GFG'], [3, 4, 'GFG'], [6, 5, 'GFG'], [4, 5, 'GFG']]
Time complexity: O(n) where n is the number of sublists in the test_list.
Auxiliary space: O(n) for the new list ‘res’ created using the list comprehension.
Method #3 : Using for loop
Python3
test_list
=
[[
1
,
3
], [
3
,
4
], [
6
,
5
], [
4
,
5
]]
print
(
"The original list : "
+
str
(test_list))
K
=
"GFG"
res
=
[]
for
i
in
test_list:
`` i.append(K)
`` res.append(i)
print
(
"The list after adding element : "
+
str
(res))
Output
The original list : [[1, 3], [3, 4], [6, 5], [4, 5]] The list after adding element : [[1, 3, 'GFG'], [3, 4, 'GFG'], [6, 5, 'GFG'], [4, 5, 'GFG']]
Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(n), where n is the length of the input list.
Method #4: Using map() and lambda function
Here is the approach using map() and lambda function
Python3
test_list
=
[[
1
,
3
], [
3
,
4
], [
6
,
5
], [
4
,
5
]]
print
(
"The original list : "
+
str
(test_list))
K
=
"GFG"
res
=
list
(
map
(
lambda
x: x
+
[K], test_list))
print
(
"The list after adding element : "
+
str
(res))
Output
The original list : [[1, 3], [3, 4], [6, 5], [4, 5]] The list after adding element : [[1, 3, 'GFG'], [3, 4, 'GFG'], [6, 5, 'GFG'], [4, 5, 'GFG']]
Time complexity: O(n)
Auxiliary Space: O(n)
Method #5: Using itertools.chain and zip:
Python3
import
itertools
test_list
=
[[
1
,
3
], [
3
,
4
], [
6
,
5
], [
4
,
5
]]
K
=
"GFG"
print
(
"The original list : "
+
str
(test_list))
res
=
[
list
(itertools.chain(i, [K]))
for
i
in
test_list]
print
(
"The list after adding element : "
+
str
(res))
Output
The original list : [[1, 3], [3, 4], [6, 5], [4, 5]] The list after adding element : [[1, 3, 'GFG'], [3, 4, 'GFG'], [6, 5, 'GFG'], [4, 5, 'GFG']]
Time complexity: O(n)
Auxiliary Space: O(n*k)
Method #6: Using numpy
To use numpy we need to install it first. You can install it using the following command: pip install numpy
Step by step approach:
- Import numpy module using import numpy as np
- Convert test_list into numpy array using np.array(test_list)
- Append the value ‘K’ to the numpy array using np.append()
- Reshape the numpy array to the original shape using .reshape() method
- Convert the numpy array back to list using .tolist() method
Python3
import
numpy as np
test_list
=
[[
1
,
3
], [
3
,
4
], [
6
,
5
], [
4
,
5
]]
print
(
"The original list : "
+
str
(test_list))
K
=
"GFG"
test_np
=
np.array(test_list)
res_np
=
np.append(test_np, np.full((
len
(test_list),
1
), K), axis
=
1
).reshape(
len
(test_list),
-
1
).tolist()
print
(
"The list after adding element : "
+
str
(res_np))
Output:
The original list : [[1, 3], [3, 4], [6, 5], [4, 5]] The list after adding element : [['1', '3', 'GFG'], ['3', '4', 'GFG'], ['6', '5', 'GFG'], ['4', '5', 'GFG']]
Time complexity: O(n) (where n is the number of elements in the list)
Auxiliary space: O(n) (for creating a numpy array)
Method #7: Using extend() method inside a for loop
Use a for loop to iterate through each sublist of the original list.
Use the extend() method to append the value to each sublist.
Python3
test_list
=
[[
1
,
3
], [
3
,
4
], [
6
,
5
], [
4
,
5
]]
K
=
"GFG"
for
sublist
in
test_list:
`` sublist.extend([K])
print
(
"The list after adding element : "
+
str
(test_list))
Output
The list after adding element : [[1, 3, 'GFG'], [3, 4, 'GFG'], [6, 5, 'GFG'], [4, 5, 'GFG']]
Time complexity: O(n), where n is the length of the list.
Auxiliary space: O(1), because no additional data structure is created.