如何翻译python列表理解中的嵌套if-else

如何翻译python列表理解中的嵌套if-else,python,list,if-statement,list-comprehension,Python,List,If Statement,List Comprehension,我试图将“常规”嵌套if-else转换为python中的列表理解,但未能完成 def functst(a, list_a, b, list_b): list_result = [] for i in range(len(list_a)): if a != 0: if list_a[i] <= a: list_result.insert(i, 1) else:

我试图将“常规”嵌套if-else转换为python中的列表理解,但未能完成

def functst(a, list_a, b, list_b):
    list_result = []
    for i in range(len(list_a)):
        if a != 0:
            if list_a[i] <= a:
                list_result.insert(i, 1)
            else:
                list_result.insert(i, a/list_a[i] * (1 - list_b[i]))
        elif list_a[i] <= b:
             list_result.insert(i,1)
        else:
            list_result.insert(i, b/list_a[i] * (1-list_b[i]))
    return list_result
def函数(a,列表a,b,列表b):
列表_结果=[]
对于范围内的i(len(列表_a)):
如果是0:

如果列表_a[i]丑陋,但它确实起作用:

list\u结果=[
(
1.

如果列表a[i]不确定为什么要这样做,但可能

如果出现以下情况:

返回[1如果在每次迭代时列表a[i],您正在计算一个由2个常量(
a
b
)和两个变量(列表a
list\u b
的内容)组成的函数。我的建议是将逻辑移到一个包含这4个参数的辅助函数中

def helper(a, A, b, B):
    if a != 0:
        if A <= a:
            return 1
        else:
            return a/A*(1-B)
    elif A <=b:
        return 1
    else:
        return b/A*(1-B)

另外,如果您要使用原始函数,您应该使用
append
而不是
insert
。更改后,您的原始方法与列表理解一样具有pythonic功能。

示例输入和输出将更有助于验证同样,您能否更清楚地了解
f的具体内容unctst()
应该做什么呢?在从scratchplus编写代码时,甚至可能有一种方法可以更简洁地完成这项工作,因为列表理解是一个糟糕的主意不要这样做。。。
list_result = [helper(a,A_val,b,B_val) for A_val, B_val in zip(list_a, list_b)]