Sunday, November 17, 2024
Google search engine
HomeLanguagesPython program to find the sum of Characters ascii values in String...

Python program to find the sum of Characters ascii values in String List

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 = [“neveropen”, “teaches”, “discipline”] 
Output : [133, 61, 100] 
Explanation : Positional character summed to get required values.

Input : test_list = [“neveropen”, “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




# Python3 code to demonstrate working of
# Characters Positions Summation in String List
# Using ord() + loop
 
# initializing list
test_list = ["neveropen",
             "teaches", "us", "discipline"]
 
# printing original list
print("The original list is : " + str(test_list))
 
res = []
for sub in test_list:
    ascii_sum = 0
     
    # getting ascii value sum
    for ele in sub :
        ascii_sum += (ord(ele) - 96)
         
    res.append(ascii_sum)
 
# printing result
print("Position Summation List : " + str(res))


Output:

The original list is : [‘neveropen’, ‘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




# Python3 code to demonstrate working of
# Characters Positional Summation in String List
# Using list comprehension + sum() + ord()
 
# initializing list
test_list = ["neveropen", "teaches",
             "us", "discipline"]
 
# printing original list
print("The original list is : " + str(test_list))
 
# sum() gets summation, list comprehension
# used to perform task in one line
res = [sum([ord(ele) - 96 for ele in sub]) for sub in test_list]
 
# printing result
print("Positional Summation List : " + str(res))


 Output:

The original list is : [‘neveropen’, ‘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




# Python3 code to demonstrate working of
# Characters Positional Summation in String List
# Using map() function
  
# initializing list
test_list = ["neveropen", "teaches",
             "us", "discipline"]
  
# printing original list
print("The original list is : " + str(test_list))
  
# map() function to calculate sum of ASCII values
res = list(map(lambda x: sum(map(lambda y: ord(y) - 96, x)), test_list))
  
# printing result
print("Positional Summation List : " + str(res))


Output

The original list is : ['neveropen', '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
 
# initializing list
test_list = ["neveropen", "teaches", "us", "discipline"]
 
# printing original list
print("The original list is : " + str(test_list))
 
# using reduce() + lambda to compute positional summation
res = [functools.reduce(lambda a, b: a + ord(b) - 96, sub, 0) for sub in test_list]
 
# printing result
print("Positional Summation List : " + str(res))


Output

The original list is : ['neveropen', '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.

RELATED ARTICLES

Most Popular

Recent Comments