将字符串列表转换为跳过第一项的浮点数和字符串的嵌套列表

Converting a list of strings into a nested list of floats and strings skipping the first item

我想将某个字符串列表转换为另一个列表中的分隔列表,该列表将包含字符串和浮点数。 我尝试使用 append 方法来获取结果,但我在制作嵌套列表时遇到了问题。有没有办法只得到我的 output 的最后一行作为结果?这是我的代码:

def func(L):
    n = []
    lists = [i.split(',') for i in L]
    for xlist in lists:
        xlist[1:] = [float(item) for item in xlist[1:]]
        n.append(xlist)
        print(n)

if __name__ == '__main__':
    func(['PersonX, 10, 92, 70', 'PersonY, 60, 70', 'PersonZ, 98.5, 1100, 95.5, 38'])
    

OUTPUT: [['PersonX', 10.0, 92.0, 70.0]]
        [['PersonX', 10.0, 92.0, 70.0], ['PersonY', 60.0, 70.0]]
        [['PersonX', 10.0, 92.0, 70.0], ['PersonY', 60.0, 70.0], ['PersonZ', 98.5, 1100.0, 95.5, 38.0]]


EXPECTED OUTPUT: [['PersonX', 10.0, 92.0, 70.0], ['PersonY', 60.0, 70.0], ['PersonZ', 98.5, 1100.0, 95.5, 38.0]]

在此先感谢您的帮助。

只需取消循环外的 print 缩进,只在最后执行一次操作:

def func(L):
    n = []
    lists = [i.split(',') for i in L]
    for xlist in lists:
        xlist[1:] = [float(item) for item in xlist[1:]]
        n.append(xlist)
    print(n)

但是请注意,通过使用 print,您实际上并没有输出包含整数的列表。您应该使用 return n

我们可以使用一些列表 unpacking 和列表串联来完成您要查找的结果:

def func(L):
    n = []
    for value in L:
        a, *b = value.split(',')
        n.append([a] + [float(item) for item in b])
    print(n)