Python | Pair summation of list elements
Last Updated :
01 Jun, 2023
Sometimes, while working with Python list, one can have a problem in which one needs to find perform the summation of list in pair form. This is useful as a subproblem solution of bigger problem in web development and day-day programming. Let’s discuss certain ways in which this problem can be solved.
Method #1 : Using loop This is the brute force method to perform this particular task. In this, we just iterate the list till last element in skipped manner to get all the pair sums in other list in an iterative way.
Python3
test_list = [ 4 , 5 , 8 , 9 , 10 , 17 ]
print ( "The original list : " + str (test_list))
res = []
for ele in range ( 0 , len (test_list), 2 ):
res.append(test_list[ele] + test_list[ele + 1 ])
print ( "Pair summation of list : " + str (res))
|
Output
The original list : [4, 5, 8, 9, 10, 17]
Pair summation of list : [9, 17, 27]
Time Complexity: O(n) where n is the number of elements in the list “test_list”. loop performs n number of operations.
Auxiliary Space: O(n), extra space is required where n is the number of elements in the list
Method #2 : Using zip() + list comprehension This task can also be performed using the combination of above functionalities. In this, we just iterate the list and the task of combining pairs is performed by zip(). Works only on Python2.
Python
test_list = [ 4 , 5 , 8 , 9 , 10 , 17 ]
print ( "The original list : " + str (test_list))
res = [i + j for i, j in zip (test_list, test_list[ 1 :])[:: 2 ]]
print ( "Pair summation of list : " + str (res))
|
Output
The original list : [4, 5, 8, 9, 10, 17]
Pair summation of list : [9, 17, 27]
Using itertools.zip_longest()
Explanation: Using the itertools library, we can use the zip_longest() function to perform the pairwise summation of the list. This method is useful when we have uneven number of elements in list.
Python3
import itertools
test_list = [ 4 , 5 , 8 , 9 , 10 , 17 ]
print ( "The original list : " + str (test_list))
res = [ sum (pair) for pair in itertools.zip_longest(test_list[:: 2 ], test_list[ 1 :: 2 ], fillvalue = 0 )]
print ( "Pair summation of list : " + str (res))
|
Output
The original list : [4, 5, 8, 9, 10, 17]
Pair summation of list : [9, 17, 27]
Time complexity: O(n)
Auxiliary Space: O(n)
Using numpy array + list comprehension
Explanation:
- Convert the given list into a numpy array.
- Using list comprehension, compute the sum of every two consecutive elements at even indices of the array.
- Append the sum to the result list.
- Print the result list.
Python3
import numpy as np
test_list = [ 4 , 5 , 8 , 9 , 10 , 17 ]
print ( "The original list : " + str (test_list))
arr = np.array(test_list)
res = [arr[i] + arr[i + 1 ] for i in range ( 0 , len (test_list), 2 )]
print ( "Pair summation of list : " + str (res))
|
Output:
The original list : [4, 5, 8, 9, 10, 17]
Pair summation of list : [9, 17, 27]
Time complexity: O(n)
Auxiliary Space: O(n)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...