Sometimes, while working with Python Strings, we can have a problem in which we need to break a string to N sized chunks to a tuple. Let’s discuss certain ways in which this task can be performed. Method #1 : Using list comprehension + tuple This is one approach in which this task can be performed. In this, we just iterate the String and break the chunks of string and construct the tuple using tuple() in one-liner.
Python3
# Python3 code to demonstrate working of # Convert String to N chunks tuple # Using list comprehension + tuple() # initialize string test_string = "ggggffffgggg" # printing original string print ( "The original string : " + str (test_string)) # initialize N N = 4 # Convert String to N chunks tuple # Using list comprehension + tuple() res = tuple (test_string[i: i + N] for i in range ( 0 , len (test_string), N)) # printing result print ( "Chunked String into tuple : " + str (res)) |
The original string : ggggffffgggg Chunked String into tuple : ('gggg', 'ffff', 'gggg')
Time Complexity: O(n), where n is the length of string
Auxiliary Space: O(n)
Method #2 : Using zip() + iter() + join() + list comprehension The combination of above functions can also be used to perform this task. In this, we perform the act of making chunks using zip() + iter(). And cumulate the result using join().
Python3
# Python3 code to demonstrate working of # Convert String to N chunks tuple # Using zip() + iter() + join()+ list comprehension # initialize string test_string = "ggggffffgggg" # printing original string print ( "The original string : " + str (test_string)) # initialize N N = 4 # Convert String to N chunks tuple # Using zip() + iter() + join() + list comprehension res = tuple ([''.join(ele) for ele in zip ( * [ iter (test_string)] * N)]) # printing result print ( "Chunked String into tuple : " + str (res)) |
The original string : ggggffffgggg Chunked String into tuple : ('gggg', 'ffff', 'gggg')
Time Complexity: O(n), where n is the length of the string
Auxiliary Space: O(n)