Python program to find the sum of Characters ascii values in String List
Last Updated :
08 Feb, 2024
Given the string list, the task is to write a Python program to compute the summation value of each character’s ASCII value.
Examples:
Input : test_list = [“geeksforgeeks”, “teaches”, “discipline”]
Output : [133, 61, 100]
Explanation : Positional character summed to get required values.
Input : test_list = [“geeksforgeeks”, “discipline”]
Output : [133, 100]
Explanation : Positional character summed to get required values.
Method 1 : Using ord() + loop
In this, we iterate each character in each string and keep on adding positional values to get its sum. The summed value is appended back to the result in a list.
Python3
test_list = [ "geeksforgeeks" ,
"teaches" , "us" , "discipline" ]
print ( "The original list is : " + str (test_list))
res = []
for sub in test_list:
ascii_sum = 0
for ele in sub :
ascii_sum + = ( ord (ele) - 96 )
res.append(ascii_sum)
print ( "Position Summation List : " + str (res))
|
Output:
The original list is : [‘geeksforgeeks’, ‘teaches’, ‘us’, ‘discipline’] Position Summation List : [133, 61, 40, 100]
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 2 : Using list comprehension + sum() + ord()
In this, we get summation using sum(), ord() is used to get the ASCII positional value, and list comprehension offers one-liner solution to this problem.
Python3
test_list = [ "geeksforgeeks" , "teaches" ,
"us" , "discipline" ]
print ( "The original list is : " + str (test_list))
res = [ sum ([ ord (ele) - 96 for ele in sub]) for sub in test_list]
print ( "Positional Summation List : " + str (res))
|
Output:
The original list is : [‘geeksforgeeks’, ‘teaches’, ‘us’, ‘discipline’] Position Summation List : [133, 61, 40, 100]
The time and space complexity for all the methods are the same:
Time Complexity : O(n2)
Auxiliary Space : O(n)
Method 3 : Using map and lambda
Here’s another approach using map() function to calculate the summation of ASCII values of each character:
Python3
test_list = [ "geeksforgeeks" , "teaches" ,
"us" , "discipline" ]
print ( "The original list is : " + str (test_list))
res = list ( map ( lambda x: sum ( map ( lambda y: ord (y) - 96 , x)), test_list))
print ( "Positional Summation List : " + str (res))
|
Output
The original list is : ['geeksforgeeks', 'teaches', 'us', 'discipline']
Positional Summation List : [133, 61, 40, 100]
This method also has the same time and space complexity as the other two methods, i.e.,
Time Complexity: O(n^2)
Auxiliary Space: O(n)
Method 4 : using the reduce function from the functools module along with a lambda function.
Step-by-step approach:
- Import the functools module.
- Initialize the list containing the strings.
- Define a lambda function that takes two arguments a and b, and returns the sum of their ordinal values (ASCII value – 96).
- Use the reduce function along with the lambda function to get the positional summation of the characters in each string.
- Print the resultant list.
Python3
import functools
test_list = [ "geeksforgeeks" , "teaches" , "us" , "discipline" ]
print ( "The original list is : " + str (test_list))
res = [functools. reduce ( lambda a, b: a + ord (b) - 96 , sub, 0 ) for sub in test_list]
print ( "Positional Summation List : " + str (res))
|
Output
The original list is : ['geeksforgeeks', 'teaches', 'us', 'discipline']
Positional Summation List : [133, 61, 40, 100]
Time complexity: O(n*m), where n is the number of strings in the list and m is the maximum length of any string.
Auxiliary space: O(n), as we are storing the positional summation of each string in a list.
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...