Python 索引列表中要根据相应索引更改的特定值

Python 索引列表中要根据相应索引更改的特定值,python,function,indexing,Python,Function,Indexing,我从前面的函数中得到了两个数组 ALPt = (90, -70, 90) N = [1, 2, 1] 我已经定义了一个新函数来对N中的每个元素进行操作,但是我想根据ALPt中对应元素的符号设置一个条件 我试过几种不同的方法,这是我最接近的方法 def ALPe(): ALPe = [] for i in N: ALPe0 = math.degrees(math.acos((i * Bt) / (math.pi * Dk))) ALPe.appe

我从前面的函数中得到了两个数组

ALPt = (90, -70, 90)
N = [1, 2, 1]
我已经定义了一个新函数来对N中的每个元素进行操作,但是我想根据ALPt中对应元素的符号设置一个条件 我试过几种不同的方法,这是我最接近的方法

def ALPe(): 
    ALPe = []
    for i in N:
        ALPe0 = math.degrees(math.acos((i * Bt) / (math.pi * Dk)))
        ALPe.append(ALPe0)
    for n, j in enumerate(ALPe):
        for m, k in enumerate(ALPt):
            if k < 0:
                ALPe[n] = j * -1
    return ALPe

ALPe = ALPe()
print(ALPe)
我遗漏了一些内容,这些内容基于ALPt中的m元素更改ALPe中n元素的符号,这将使输出如下所示:

[80.8421504880813, -71.43925528310385, 80.8421504880813]
有什么建议吗?

看看:

因此,阿尔卑斯山脉中的每个元素都应该与阿尔卑斯山脉中的元素具有相同的符号 同一位置的ALPt?-一小时前的格利布杜德

这就是目标——chic9009

这就是我们想要的吗

a = [1.0, -2.0, -3.0, 4]
b = [4, -3, 2 , -1.0]

[abs(a)*((-1)**(b < 0)) for a, b in zip(a,b)]

Out[41]: [1.0, -2.0, 3.0, -4]
a=[1.0,-2.0,-3.0,4]
b=[4,-3,2,-1.0]
[abs(a)*((-1)**(b<0))用于a,b压缩(a,b)]
输出[41]:[1.0,-2.0,3.0,-4]

要模拟我的输出,Bt=25和Dk=50为什么对函数和列表使用相同的变量名?只有当
j
为正时才会发生这种情况,而不是结果显示的情况。同样,正如@BcK所提到的,不要在函数和列表中使用相同的名称。没有循环的名称,所有的js都是正数。当我添加条件语句时,它们都变成了负数。只有中间的j应该是负数。因此
ALPe
中的每个元素都应该与
ALPt
中位于相同位置的元素具有相同的符号?不幸的是没有。使用数组N执行计算,输出数组ALPt的各个组件的符号应基于数组ALPe的符号
a = [1.0, -2.0, -3.0, 4]
b = [4, -3, 2 , -1.0]

[abs(a)*((-1)**(b < 0)) for a, b in zip(a,b)]

Out[41]: [1.0, -2.0, 3.0, -4]