Python | Flatten Tuples List to String
Last Updated :
21 Apr, 2023
Sometimes, while working with data, we can have a problem in which we need to perform interconversion of data. In this, we can have a problem of converting tuples list to a single String. Let’s discuss certain ways in which this task can be performed.
Method #1: Using list comprehension + join() The combination of above functionalities can be used to perform this task. In this, we join all the individual string elements using join() and extraction of each element is done using list comprehension.
Python3
test_list = [( '1' , '4' , '6' ), ( '5' , '8' ), ( '2' , '9' ), ( '1' , '10' )]
print ( "The original list : " + str (test_list))
res = ' ' .join([idx for tup in test_list for idx in tup])
print ( "Tuple list converted to String is : " + res)
|
Output :
The original list : [('1', '4', '6'), ('5', '8'), ('2', '9'), ('1', '10')]
Tuple list converted to String is : 1 4 6 5 8 2 9 1 10
Time complexity: O(n) where n is the total number of elements in the list of tuples.
Auxiliary space: O(n) as the join function creates a new string with the concatenated elements from the list comprehension.
Method #2 : Using chain() + join() This is yet another method to perform this particular task. In this, we perform the task of extracting each of element of tuple list using chain() rather than list comprehension.
Python3
from itertools import chain
test_list = [( '1' , '4' , '6' ), ( '5' , '8' ), ( '2' , '9' ), ( '1' , '10' )]
print ( "The original list : " + str (test_list))
res = ' ' .join(chain( * test_list))
print ( "Tuple list converted to String is : " + res)
|
Output :
The original list : [('1', '4', '6'), ('5', '8'), ('2', '9'), ('1', '10')]
Tuple list converted to String is : 1 4 6 5 8 2 9 1 10
Time complexity: O(n), where n is the total number of elements in the input list of tuples.
Auxiliary Space: O(m), where m is the maximum length of any tuple in the input list.
Method #3 : Using extend(),list(),join() methods
Python3
test_list = [( '1' , '4' , '6' ), ( '5' , '8' ), ( '2' , '9' ), ( '1' , '10' )]
print ( "The original list : " + str (test_list))
res = []
for i in test_list:
res.extend( list (i))
res = " " .join(res)
print ( "Tuple list converted to String is : " + res)
|
Output
The original list : [('1', '4', '6'), ('5', '8'), ('2', '9'), ('1', '10')]
Tuple list converted to String is : 1 4 6 5 8 2 9 1 10
Time complexity: O(n), where n is the total number of elements in the input list of tuples.
Auxiliary space: O(n), as we create a new list res to store the flattened list of elements, and then join them into a single string.
Method 4: using the map() function and join() method
In this approach, we are using the sum() function with an empty tuple as the start value to flatten the list of tuples into a single tuple. Then we are using the map() function to convert each element of the tuple into a string, and finally using the join() method to join the elements of the tuple into a single string with space as the separator.
Python3
test_list = [( '1' , '4' , '6' ), ( '5' , '8' ), ( '2' , '9' ), ( '1' , '10' )]
print ( "The original list : " + str (test_list))
res = " " .join( map ( str , sum (test_list, ())))
print ( "Tuple list converted to String is : " + res)
|
Output
The original list : [('1', '4', '6'), ('5', '8'), ('2', '9'), ('1', '10')]
Tuple list converted to String is : 1 4 6 5 8 2 9 1 10
Time complexity: O(n), where n is the total number of elements in the list of tuples.
Auxiliary space: O(n), where n is the total number of elements in the list of tuples.
Method #5: Using itertools and join()
The program initializes a list of tuples called test_list. It then uses the itertools.chain() method to flatten the list of tuples and the join() method to join the elements using space as the separator. Finally, it prints the original list and the flattened string.
- Import itertools module which provides tools for working with iterators.
- Use itertools.chain() method to flatten the list of tuples. It takes multiple iterables as arguments and returns a single iterator that produces the contents of those iterables as if they came from a single sequence.
- Use the * operator to unpack the list of tuples as arguments to chain() method.
- Use the join() method to join the flattened list of tuples into a single string with space as separator.
- Print the result.
Python3
import itertools
test_list = [( '1' , '4' , '6' ), ( '5' , '8' ), ( '2' , '9' ), ( '1' , '10' )]
print ( "The original list : " + str (test_list))
res = ' ' .join(itertools.chain( * test_list))
print ( "Tuple list converted to String is : " + res)
|
Output
The original list : [('1', '4', '6'), ('5', '8'), ('2', '9'), ('1', '10')]
Tuple list converted to String is : 1 4 6 5 8 2 9 1 10
Time complexity: O(n), where n is the total number of elements in the list of tuples.
Auxiliary Space: O(n), where n is the total number of elements in the list of tuples.
Method 6: Using nested loops
Step-by-step approach:
- Initialize an empty string res that will contain the flattened list of tuples as a string.
- Use a nested loop to iterate through each tuple in test_list and each element in each tuple:
- The outer loop iterates through each tuple in test_list using for tup in test_list:.
- The inner loop iterates through each element in each tuple using for element in tup:.
- Concatenate each element and a space character to res using res += element + ” “.
- Remove the last space character from res using res = res[:-1].
- Print the final flattened list of tuples as a string using print(“Tuple list converted to String is : ” + res).
Python3
test_list = [( '1' , '4' , '6' ), ( '5' , '8' ), ( '2' , '9' ), ( '1' , '10' )]
print ( "The original list : " + str (test_list))
res = ""
for tup in test_list:
for element in tup:
res + = element + " "
res = res[: - 1 ]
print ( "Tuple list converted to String is : " + res)
|
Output
The original list : [('1', '4', '6'), ('5', '8'), ('2', '9'), ('1', '10')]
Tuple list converted to String is : 1 4 6 5 8 2 9 1 10
The time complexity of this method is O(nm), where n is the number of tuples in the list and m is the maximum number of elements in any tuple.
The auxiliary space complexity is O(nm), as we need to store each element of each tuple in the resulting string.
Please Login to comment...