如果我想将子列表中的第二个元素变成浮点数,但列表中并非每个列表都有第二个元素,该怎么办?蟒蛇

问题描述 投票:0回答:1

这是列表列表的示例。

[(“琥珀”,“7.3”),(“莫莉”,“14.5”),(“丽莎”)]

如您所见,有两个列表都有第二个元素。这些元素是字符串,但需要转换为浮点数。问题归结为列表中的最后一个元素。最后一个元素不是列表,而只是一个字符串,我希望我的程序忽略它。

我尝试了一些不同的东西,但还是回到了基本的

for i in lst:
    for x in i:
        float(x[1])

但是我当然得到一个错误,因为 ("lisa") 没有 x[1] 来改变它。我仍然希望 Lisa 存在于我的列表中,我只是希望这些数字专门变成浮点数。

[(“琥珀”,7.3),(“莫莉”,14.5),(“丽莎”)]

我倾向于想得太多,所以如果有些事情没有意义或者这不是我在 python 中可以做的事情,请告诉我。

python list
1个回答
0
投票

元组是不可变的,因此您无法就地修改它们。您需要构造包含修改后的第二个元素的新元组。

使用条件表达式以避免在只有一个元素时尝试访问

x[1]

您也不应该有嵌套循环。您的内部循环正在迭代每个元组中的所有项目,但您只想转换第二个项目。

new_lst = [(x[0], float(x[1])) if len(x) == 2 else x for x in lst]
© www.soinside.com 2019 - 2024. All rights reserved.