gpt4 book ai didi

python - 在字符串列表中将 None 更改为 Float (Python)

转载 作者:太空宇宙 更新时间:2023-11-04 00:31:56 26 4
gpt4 key购买 nike

我有一长串格式如下的字符串:

    [...
(0.5, 'house', 'flower'),
(0.213, 'garden', 'flowerpot'),
(None, 'mulch', 'hunting'),
(0.9, 'flower', 'tulip'),
(0.34, 'party', 'music'),
(None, 'piano', 'trowel'),
(0.138, 'fertilizer', 'cow')
...]

在我可以根据第一个元素对列表进行排序之前,我必须将 None 类型转换为 float 。如何将列表中的所有 Nones 更改为 float 0?

我正在尝试:

mylist = map(lambda x: 0 if x[0] == None, else x, mylist)

但是在某个地方我的语法出了问题——有人建议用 Pythonic 替换整个列表中每个字符串的第一个元素中的所有 Nones 吗?

最佳答案

您可以使用:

list(map(lambda x: (0.0,)+x[1:] if x[0] is None else x,mylist))

产生:

>>> list(map(lambda x: (0.0,)+x[1:] if x[0] is None else x,mylist))
[(0.5, 'house', 'flower'), (0.213, 'garden', 'flowerpot'), (0.0, 'mulch', 'hunting'), (0.9, 'flower', 'tulip'), (0.34, 'party', 'music'), (0.0, 'piano', 'trowel'), (0.138, 'fertilizer', 'cow')]

代码的工作原理如下:我们因此执行与 lambda x: (0.0,)+x[1:] if x[0] is None else x 的映射作为映射函数。

这是一个三元运算符:如果第一个元素x[0] is None , 我们返回 (0.0,)+x[1:]所以我们用 0.0 构造一个新的元组作为第一个元素,x[1:]作为剩余元素。如果第一个元素不是 None ,我们简单地返回 x .

这将适用于每个元组,因为它有至少一个元素。如果列表中可以有空元组,我们可以将表达式更改为:

list(map(lambda x: (0.0,)+x[1:] if x and x[0] is None else x,mylist))

关于python - 在字符串列表中将 None 更改为 Float (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45489357/

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