 Open in App
Not now

# Python | Convert heterogeneous type String to List

• Last Updated : 23 Jan, 2023

Sometimes, while working with data, we can have a problem in which we need to convert data in string into a list, and the string contains elements from different data types like boolean. This problem can occur in domains in which a lot of data types are used. Let’s discuss certain ways in which this problem can be solved.

Method #1 : Using list comprehension + split() + strip()
The combination of the above methods can be used to solve this problem. In this, we perform the split of elements and then strip the stray character to convert data types and compile the whole logic of list construction using list comprehension.

## Python3

 `# Python3 code to demonstrate working of``# Convert String of Heterogeneous types to List``# using list comprehension + split() + strip()` `# initializing string``test_str ``=` `"'gfg', 'is', True, 'best', False"` `# printing original string``print``(``"The original string is : "` `+` `test_str)` `# Convert String of Heterogeneous types to List``# using list comprehension + split() + strip()``res ``=` `[ele.strip() ``if` `ele.strip().startswith(``"'"``) ``else` `ele ``=``=` `'``True``'``      ``for` `ele ``in` `test_str.split(``', '``)]` `# printing result``print``(``"List after conversion from string : "` `+` `str``(res))`

Output

```The original string is : 'gfg', 'is', True, 'best', False
List after conversion from string : ["'gfg'", "'is'", True, "'best'", False]```

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

Method #2 : Using eval()
This inbuilt function auto-detects the data type and performs the conversion. It is single phrase solution and also provides a solution even if integers are in string and hence recommended for this solution.

## Python3

 `# Python3 code to demonstrate working of``# Convert String of Heterogeneous types to List``# using eval()` `# initializing string``test_str ``=` `"'gfg', 'is', True, 'best', False, 1, 2"` `# printing original string``print``(``"The original string is : "` `+` `test_str)` `# Convert String of Heterogeneous types to List``# using eval()``res ``=` `list``(``eval``(test_str))` `# printing result``print``(``"List after conversion from string : "` `+` `str``(res))`

Output

```The original string is : 'gfg', 'is', True, 'best', False, 1, 2
List after conversion from string : ['gfg', 'is', True, 'best', False, 1, 2]```

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

Method : Using ast

Another method to convert a heterogeneous type string to a list is to use the ast module. The ast module provides a function called “literal_eval()” that can be used to evaluate a string containing a Python literal, such as a list or a tuple. This method is safer than using the “eval()” function, as it only evaluates literals and not arbitrary expressions, making it less susceptible to malicious input.

Here is an example of how to use the ast module to convert a heterogeneous type string to a list:

## Python3

 `import` `ast` `# Initializing string``test_str ``=` `"'gfg', 'is', True, 'best', False, 1, 2"` `# Printing original string``print``(``"The original string is : "` `+` `test_str)` `# Convert String of Heterogeneous types to List``# using ast.literal_eval()``res ``=` `ast.literal_eval(test_str)` `# Printing result``print``(``"List after conversion from string : "``, ``list``(res))``#this code is contributed by edula vinay kumar reddy`

Output

```The original string is : 'gfg', 'is', True, 'best', False, 1, 2
List after conversion from string :  ['gfg', 'is', True, 'best', False, 1, 2]```

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

My Personal Notes arrow_drop_up