Skip to content Skip to sidebar Skip to footer

Convert A List Of Strings To A List Of Tuples In Python

I have a list of strings in this format: ['5,6,7', '8,9,10'] I would like to convert this into the format: [(5,6,7), (8,9,10)] So far I have tried this: [tuple(i.split(',')) for

Solution 1:

If your strings are strings representation of number, then:

[tuple(int(s) for s in i.split(',')) for i in k]

Solution 2:

The following solution is for me the most readable, perhaps it is for others too:

a = ['5,6,7', '8,9,10']          # Original list
b = [eval(elem) for elem in a]   # Desired listprint(b)

Returns:

[(5, 6, 7), (8, 9, 10)]

The key point here being the builtin eval() function, which turns each string into a tuple. Note though, that this only works if the strings contain numbers, but will fail if given letters as input:

eval('dog')

NameError: name 'dog' is notdefined

Solution 3:

Your question requires the grouping of elements. Hence, an appropriate solution would be:

l = ['5','6','7', '8','9','10']
[(lambda x: tuple(int(e) for e in x))((i,j,k)) for (i, j, k) inzip(l[0::3], l[1::3], l[2::3])]

This outputs:

[(5, 6, 7), (8, 9, 10)]

As desired.

Post a Comment for "Convert A List Of Strings To A List Of Tuples In Python"