gpt4 book ai didi

python - 如何将列表列表中的字符串转换为 float ?

转载 作者:行者123 更新时间:2023-12-03 20:04:20 25 4
gpt4 key购买 nike

my_list=[['A','B','C','0.0'],['D','E','F','1.0'],['G','H','I','0'],['J','K','L','M']

我试过做
new_list=[[float(x) for x in i if x.isnumeric()] for i in my_list]
输出
[[0.0],[1.0],[0],[]]
预期输出
[['A','B','C',0.0],['D','E','F',1.0],['G','H','I',0],['J','K','L','M']
我不知道如何将最终值转换为浮点数并就地修改值,我尝试附加。我也尝试了其他问题的答案,但他们创建了一个新列表,但我想更改原始列表。
编辑 更改了我的列表以包含小数。如果数字(字符串)为“0”但不是小数“0.0”或“1.0”,则以下答案有效。

最佳答案

您需要保留 x如果 x不是数字。你很接近:

>>> my_list = [['A','B','C','0'], ['D','E','F','1'], ['G','H','I','J']]
>>> new_list = [[float(x) if x.isnumeric() else x for x in i] for i in my_list]
>>> new_list
[['A', 'B', 'C', 0.0], ['D', 'E', 'F', 1.0], ['G', 'H', 'I', 'J']]
请注意 if x.isnumeric() else x在列表理解中,并且它在理解的开头,而不是结尾(因为它是三元条件)

正如您所注意到的,这是创建一个新列表,而不是修改原始列表。如果你想保留原始列表,一个基本的 for 循环会更好:
for i, sublist in enumerate(my_list):
for j, x in enumerate(sublist):
try:
my_list[i][j] = float(x)
except ValueError:
pass

[['A', 'B', 'C', 0.0], ['D', 'E', 'F', 1.0], ['G', 'H', 'I', 'J']]

关于python - 如何将列表列表中的字符串转换为 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63481642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com