我正在尝试在这里实现非常简单的功能,以一种优雅的方式可以实现,但我不知道如何:
假设我有一个列表my_list = [1, None, 3, 4],想要val = 3向每个数字元素添加一个常量以获得my_list + val = [4, None, 6, 7]:
可以使用带有None值条件的有点笨重的循环来完成此操作:
my_list = [1, None, 3, 4]
val = 3
for idx, el in enumerate(my_list):
if el is not None:
my_list[idx] += val
print(my_list)
>>> [4, None, 6, 7]
Run Code Online (Sandbox Code Playgroud)
但是,我强烈认为必须有一种更优雅的方法。我尝试了以下方法:
my_list = list(map(lambda x: x+val, filter(None, my_list)))
print(my_list)
>>> [4, 6, 7]
Run Code Online (Sandbox Code Playgroud)
但是后来这些None元素消失了,我需要保留它们。
任何想法表示赞赏!
您正在寻找以下内容
[i + val if i is not None else i for i in my_list]
Run Code Online (Sandbox Code Playgroud)
如果不是,它将简单地将val添加到每个元素,否则将保留值