我有这种格式的字符串列表:
['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')]
我对如何简单地将字符串转换为整数元组感到困惑。谢谢
答案 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)]
根据需要。