如何将两个列表相同索引的元素相加?

1 投票
2 回答
44 浏览
提问于 2025-04-12 08:55

我知道这个标题听起来有点傻,但我想做的是把两个列表中相同位置的元素加在一起。比如说,如果我有 list1[2, 3, 4] 和 list2[5, 6, 7],我希望在一个函数里把它们对应位置的数字相加,然后得到这些和,再和最小值进行比较,最后判断这个函数的结果是对还是错。

def lock_and_key(key_cuts, lock_pinning, minimum):
    for v1 in key_cuts:
        for v2 in lock_pinning:
            sum = abs(v1 + v2 -6)
            if sum > minimum:
                return False
    else:
        return True

if lock_and_key([2.1, 3.5, 2.7], [4.1, 2.5, 3.2],  0.25):
    print('Unlocked.')
else:
    print('Still locked.')**

我大部分的代码都写好了,但我遇到的问题是这两个列表的元素数量可能不一样,所以我不能像 list1[0] + list2[0] 这样固定写索引。

2 个回答

3

如果我理解得没错,你是想比较两个列表中相同位置的元素。为此,你可以把这两个数组合并在一起(前提是它们的大小相同),然后进行比较:

def lock_and_key(key_cuts, lock_pinning, minimum):
    for v1, v2 in zip(key_cuts, lock_pinning):
        sum = abs(v1 + v2 - 6)
        if sum > minimum:
            return False
    return True

if lock_and_key([2.1, 3.5, 2.7], [4.1, 2.5, 3.2], 0.25):
    print('Unlocked.')
else:
    print('Still locked.')
4

试试Python内置的zip方法,它可以把一个可迭代对象中相同位置的元素组合在一起。这样你就可以这样做:

def lock_and_key(key_cuts, lock_pinning, minimum):
    for value_of_key, value_of_lock in zip(key_cuts, lock_pinning)
        sum = abs(value_of_key + value_of_lock -6)
        if sum > minimum:
            return False
    return True

撰写回答