如何将两个列表相同索引的元素相加?
我知道这个标题听起来有点傻,但我想做的是把两个列表中相同位置的元素加在一起。比如说,如果我有 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