gpt4 book ai didi

Python 使用 for/if 转换和过滤列表

转载 作者:行者123 更新时间:2023-12-01 23:00:08 26 4
gpt4 key购买 nike

有没有办法在单个列表理解中同时进行转换和过滤,即:

def transform(el):
if some_condition(el):
return None

return complex_logic(el)

def main():
transformed = [transform(el) for el in some_list if transform(el) != None]

但要避免调用 transform 两次? IE。将它分配给一个变量,比如(在伪 Python 中):

def main():
transformed = [transformed for el in some_list let transformed = transform(el) if transformed != None]

最佳答案

从 Python 3.8 开始,您可以使用 walrus operator :=:

def main():
return [res for el in some_list if (res := transform(el)) is not None]

这样,调用 transform 函数的结果将存储在 res 中,然后您可以在列表理解的表达式部分使用它。

关于Python 使用 for/if 转换和过滤列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72133777/

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