如何翻译python列表理解中的嵌套if-else
我试图将“常规”嵌套if-else转换为python中的列表理解,但未能完成如何翻译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:
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)]