Python 有没有办法缩短这个特定的代码段? def交叉(a、b、w): f1=b-w f2=a-w 如果f1

Python 有没有办法缩短这个特定的代码段? def交叉(a、b、w): f1=b-w f2=a-w 如果f1,python,Python,我试着让它更像python,例如,在条件允许的情况下,缩短它,并将其与短的一行组合,尽管我找不到任何方法。。有人知道怎么缩短吗 如果f1和f2中的任何一个都是负数,我想让它们都是正数。这里没有什么类似于python的 def cross(a, b, w): f1 = b - w f2 = a - w if f1 < 0: f1 = f1 * (-1) elif f2 < 0: f2 = f2 * (-1) el

我试着让它更像python,例如,在条件允许的情况下,缩短它,并将其与短的一行组合,尽管我找不到任何方法。。有人知道怎么缩短吗

如果f1和f2中的任何一个都是负数,我想让它们都是正数。

这里没有什么类似于python的

def cross(a, b, w):
    f1 = b - w
    f2 = a - w

    if f1 < 0:
        f1 = f1 * (-1)
    elif f2 < 0:
        f2 = f2 * (-1)
    else:
        pass

    return f1, f2
x = cross(10, 7, 5)
print(x)
但最好只是返回abs值

def cross(a, b, w):
    f1 = b - w
    f2 = a - w

    f1 = f1 if f1>0 else -f1
    f2 = f2 if f2>0 else -f2
    
    return f1, f2

x = cross(10, 7, 5)

print(x)
但如果你说的是if-else,比如逻辑,那么它可以简化为一行,但它只是更紧凑的代码,但效率不高

def cross(a, b, w):
    return list(map(abs, ( b - w,  a - w)))

在这里,这将处理棘手的if/else:

def cross(a, b, w):
    f1 = b - w
    f2 = a - w

 
    
    return abs(f1), abs(f2) if f1!= abs(f1) else f2 

x = cross(10, 7, 5)

print(x)
def交叉(a、b、w):
f1=w-b,如果(b-w)<0,则b-w
f2=如果((a-w)<0和(b-w)>=0)否则a-w
返回f1,f2
x=交叉(10,7,5)
打印(x)
一套解决方案:

def cross(a, b, w):
    f1 = abs(b - w)
    f2 = abs(a - w)
    return f1, f2
print(f1,f2)

>>>cross(10,7,5)

>>>output = (2, 5)

行为是不同的。如果
f1
f2
均为负值,则OP的代码只会更改
f1
。(顺便说一句,我没有否决你的答案)哦,好吧,否则特拉波普的意图就是让这两个答案都是积极的。所以我把你原来的答案倒回去了,因为它是正确的:)哇,但是你是怎么回复我的答案的?如果我删除了一些东西,我就不会得到答案。嘿,但是,w8删除了我最新的答案。这更适合于所提供的代码,将意图分开。使用
返回math.abs(b-w),math.abs(a-w)
作为一个一行解决方案,p的代码具有
elif
。如果
f1
f2
均为负值,则只有
f1
变为正值。到目前为止,所有的答案都有不同的表现。用
cross(1,2,5)
@velotoy测试,你想缩短的是什么?您可以删除
else:pass
,但其他一切似乎都正常。另外,如果
f1
f2
都是负数,您是否打算只更改
f1
的符号?@Aziz噢,我没听清楚!我的目的是只获取正值,例如,如果f1或f2为负值,则输出正值。我还想把它变成一根弦,去掉“-”来实现它。。有什么意见吗?代码中的
elif
部分会导致
f2
如果
f1
也为正值,则仍然为负值。但既然你希望两者都是积极的,@VisheshMangla最初的答案是正确的。
def cross(a, b, w):
    f1 = abs(b - w)
    f2 = abs(a - w)
    return f1, f2
print(f1,f2)

>>>cross(10,7,5)

>>>output = (2, 5)
def cross(a, b, w):
    return (abs(b-w),a-w) if b-w<0 else (b-w, abs(a-w)) if a-w<0 else (b-w,a-w)

x = cross(1, 2, 5)
print(x)
(3, -4)