Python 将列表除以列表?

Python 将列表除以列表?,python,list,for-loop,typeerror,Python,List,For Loop,Typeerror,要将列表中的每个项目除以另一个列表中的项目,在同一个位置,我有以下代码: def calc_cosine(up_part, down_part): cosines = list(map(truediv, up_part, down_part)) return cosines 上一部分: [4.0, 4.0, 2.0, 5.0] 下半部分: [6.0, 8.94427190999916, 6.928203230275509, 7.348469228349535] 输出: [0

要将列表中的每个项目除以另一个列表中的项目,在同一个位置,我有以下代码:

def calc_cosine(up_part, down_part):
    cosines = list(map(truediv, up_part, down_part))
    return cosines
上一部分:

[4.0, 4.0, 2.0, 5.0]
下半部分:

[6.0, 8.94427190999916, 6.928203230275509, 7.348469228349535]
输出:

[0.6666666666666666, 0.4472135954999579, 0.2886751345948129, 0.6804138174397716]
但是,当我在flask应用程序中使用此函数时,它会给出一个
TypeError

是否有人知道如何将每个列表元素除以位于同一位置的第二个列表的元素,然后才使用
for
循环?

您可以使用来对列表的相同索引进行配对-对于长度不等的列表,较长列表中未配对的部分将被删除(在这种情况下使用)

将打印

[(4.0, 6.0), (4.0, 8.94427190999916), (2.0, 6.928203230275509), (5.0, 7.348469228349535)]

完整代码:

from operator import truediv 

def calc_cosine(up_part, down_part):
    cosines=[]
    for data in zip(up_part, down_part):
        cosines.append(truediv(*data))
    return cosines

up_part = [4.0, 4.0, 2.0, 5.0]
down_part= [6.0, 8.94427190999916, 6.928203230275509, 7.348469228349535]

print(calc_cosine(up_part, down_part))
印刷品:

[0.6666666666666666, 0.4472135954999579, 0.2886751345948129, 0.6804138174397716]
简言之:

from operator import truediv 

up_part = [4.0, 4.0, 2.0, 5.0]
down_part= [6.0, 8.94427190999916, 6.928203230275509, 7.348469228349535]

print([ truediv(*c) for c in zip(up_part, down_part)])

您可以在其中一个列表的长度上循环(
up\u part
),并将它们除以第二个列表中的相应值:

def element_wise_division(up_part, down_part):
    output=[]
    for x in range(len(up_part)):
        output.append(up_part[x]/down_part[x])
    return output

这并不太有效,但易于阅读和调试。请注意,如果
down\u部分
up\u部分
短,则会引发错误。您可以将列表理解与
zip一起使用:

def calc_cosine(up_part, down_part):
    return [u / d for u, d in zip(up_part, down_part)]

嗨,Arthur,请提供一个给定输入集的预期输出示例。这将有助于澄清您的问题。请检查您的问题的缩进code@DavidFoster很抱歉,我添加了它。你能显示整个错误消息吗?虽然我没有在flask中测试,但你的代码对我来说应该是有效的。你知道为什么当他们的
map
版本不起作用时,这会起作用吗?@Heap OP尝试通过另一个列表来truediv一个列表。我从这些列表中创建成对的数字(使用zip),并将每对数字输入truediv。所以我把数字分开,它们不会。不,OP也会把成对的数字输入到truediv中。它可以工作:@Heap,但不能像他要求的那样使用for循环-用于调试目的。他发现了一个错误,想要一个更易于调试的for循环版本。啊,好的。这可能是一个很好的理由。他们没有提到可调试性,所以我有点忽略了for循环请求。
def calc_cosine(up_part, down_part):
    return [u / d for u, d in zip(up_part, down_part)]