Convert a list of strings to a list of tuples in python

后端 未结 3 478
囚心锁ツ
囚心锁ツ 2021-01-19 19:17

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         


        
相关标签:
3条回答
  • 2021-01-19 19:52

    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) in zip(l[0::3], l[1::3], l[2::3])]
    

    This outputs:

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

    As desired.

    0 讨论(0)
  • 2021-01-19 19:58

    If your strings are strings representation of number, then:

    [tuple(int(s) for s in i.split(',')) for i in k]
    
    0 讨论(0)
  • 2021-01-19 20:03

    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 list
    
    print(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 not defined
    
    0 讨论(0)
提交回复
热议问题