将字符串列表转换为python中的元组列表

时间:2014-08-25 04:02:22

标签: python string list tuples

我有这种格式的字符串列表:

['5,6,7', '8,9,10']

我想将其转换为以下格式:

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

到目前为止,我已经尝试过这个:

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

我获得了:

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

我对如何简单地将字符串转换为整数元组感到困惑。谢谢

3 个答案:

答案 0 :(得分:3)

如果你的字符串是数字的字符串表示,那么:

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

答案 1 :(得分:2)

以下解决方案对我来说是最具可读性的,也许也适用于其他人:

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

print(b)

返回:

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

这里的关键点是内置eval()函数,它将每个字符串转换为元组。 但请注意,这仅在字符串包含数字时有效,但如果给定字母作为输入则会失败:

eval('dog')

NameError: name 'dog' is not defined

答案 2 :(得分:1)

您的问题需要元素分组。因此,适当的解决方案是:

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])]

输出:

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

根据需要。