 GeeksforGeeks App
Open App Browser
Continue

# Python | Convert string tuples to list tuples

Sometimes, while working with Python we can have a problem in which we have a list of records in form of tuples in stringified form and we desire to convert them to a list of tuples. This kind of problem can have its occurrence in the data science domain. Let’s discuss certain ways in which this task can be performed.

Method 1 (Using eval() + list comprehension): This problem can be easily performed as a one-liner using the inbuilt function of eval(), which performs this task of string to tuple conversion and list comprehension.

## Python3

 `# Python3 code to demonstrate working of``# Converting string tuples to list tuples``# using list comprehension + eval()` `# Initializing list``test_list ``=` `[``"('gfg', 1)"``, ``"('is', 2)"``, ``"('best', 3)"``]` `# printing original list``print``(``"The original list is : "` `+` `str``(test_list))` `# Converting string tuples to list tuples``# using list comprehension + eval()``res ``=` `[``eval``(ele) ``for` `ele ``in` `test_list]` `# printing result``print``(``"The list tuple after conversion : "` `+` `str``(res))`

Output :

```The original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]```

Time complexity: O(n), where n is the length of the input list.
Auxiliary space: O(n), as we are creating a new list with the same length as the input list.

Method 2 (Using eval() + map()): This task can also be performed using a combination of the above functions. The task performed by list comprehension above can be performed using a map() in this method.

## Python3

 `# Python3 code to demonstrate working of``# Converting string tuples to list tuples``# using map() + eval()` `# Initializing list``test_list ``=` `[``"('gfg', 1)"``, ``"('is', 2)"``, ``"('best', 3)"``]` `# printing original list``print``(``"The original list is : "` `+` `str``(test_list))` `# Converting string tuples to list tuples``# using map() + eval()``res ``=` `list``(``map``(``eval``, test_list))` `# printing result``print``(``"The list tuple after conversion : "` `+` `str``(res))`

Output :

```The original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]```

Time Complexity: O(n), where n is the number of elements in the input list.
Auxiliary Space: O(n), where n is the number of elements in the input list, for the output list.

Method 3: Using the enumerate function

## Python3

 `s``=``[``"('gfg', 1)"``, ``"('is', 2)"``, ``"('best', 3)"``]``x``=` `[``eval``(i) ``for` `a,i ``in` `enumerate``(s)]``print``(x)`

Output

`[('gfg', 1), ('is', 2), ('best', 3)]`

Time complexity: O(n), where n is the length of the list ‘s’.
Auxiliary space: O(n), where n is the length of the list ‘s’.

Method 4: Using map()+eval()

## Python3

 `s``=``[``"('gfg', 1)"``, ``"('is', 2)"``, ``"('best', 3)"``]``x``=``list``(``map``(``eval``,s))` `print``(x)`

Output

`[('gfg', 1), ('is', 2), ('best', 3)]`

The time complexity of the program is O(n), where n is the length of the list “s”.
The auxiliary space complexity of the program is also O(n), as the list “x” has to store n elements, where n is the length of the input list “s”.

Method#5: Using Regex method.

## Python3

 `# Python3 code to demonstrate working of``# Converting string tuples to list tuples``# Using regex``import` `re``# Initializing list``test_list ``=` `[``"('gfg', 1)"``, ``"('is', 2)"``, ``"('best', 3)"``]` `# printing original list``print``(``"The original list is : "` `+` `str``(test_list))` `# Converting string tuples to list tuples``# using regex`  `res ``=` `[``tuple``(``map``(``int``, re.findall(r``'\d+'``, i))) ``if` `j.isdigit() ``else` `(j.strip(``"(')"``), ``int``(k)) ``for` `i ``in` `test_list ``for` `j, k ``in` `re.findall(r``"\('(.*?)', (.*?)\)"``, i)]` `# printing result``print``(``"The list tuple after conversion : "` `+` `str``(res))``#this code contributed by tvsk`

Output

```The original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]```

Time Complexity: O(n)
Auxiliary Space: O(n)

Method 6: (Using ast.literal_eval() instead of eval())

The ast module provides a safer way to evaluate string literals. The ast.literal_eval() function can evaluate a string containing a Python expression or a container object literal and return the corresponding object. It only evaluates literals, so it won’t execute arbitrary code like eval().

## Python3

 `import` `ast` `# Initializing list``test_list ``=` `[``"('gfg', 1)"``, ``"('is', 2)"``, ``"('best', 3)"``]` `# printing original list``print``(``"The original list is : "` `+` `str``(test_list))` `# Converting string tuples to list tuples``# using ast.literal_eval() instead of eval()``# ast.literal_eval() is a safer way to evaluate string literals``# it only evaluates literals, so it won't execute arbitrary code like eval()``res ``=` `[ast.literal_eval(ele) ``for` `ele ``in` `test_list]` `# printing result``print``(``"The list tuple after conversion : "` `+` `str``(res))`

Output

```The original list is : ["('gfg', 1)", "('is', 2)", "('best', 3)"]
The list tuple after conversion : [('gfg', 1), ('is', 2), ('best', 3)]```

Time Complexity: O(n)
Auxiliary Space: O(n)

My Personal Notes arrow_drop_up