
如何进行python列表加减
用户关注问题
我想在Python中对两个列表的对应元素进行加法操作,比如[1,2,3]和[4,5,6]得到[5,7,9],应该怎么操作?
利用列表推导式实现两个列表元素相加
可以使用列表推导式结合zip函数,将两个列表中对应位置的元素相加。示例代码如下:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = [a + b for a, b in zip(list1, list2)]
print(result) # 输出 [5, 7, 9]
我想针对两个长度相同的列表,计算对应元素的差值,应该如何实现?
使用zip函数结合列表推导式进行元素减法
可以利用zip函数将两个列表中的元素配对,再通过列表推导式进行减法操作。例如:
list1 = [10, 20, 30]
list2 = [1, 2, 3]
result = [a - b for a, b in zip(list1, list2)]
print(result) # 输出 [9, 18, 27]
如果两个列表长度不一样,直接用zip函数会丢失较长列表的多余元素,如何实现加减并保留所有元素?
借助itertools.zip_longest处理不同长度列表
可以使用itertools模块中的zip_longest函数,它会用指定的填充值补齐较短列表,从而确保所有元素都被处理。示例如下:
from itertools import zip_longest
list1 = [1, 2, 3, 4]
list2 = [10, 20]
result_add = [ (a if a is not None else 0) + (b if b is not None else 0)
for a, b in zip_longest(list1, list2, fillvalue=0) ]
print(result_add) # 输出 [11, 22, 3, 4]
result_sub = [ (a if a is not None else 0) - (b if b is not None else 0)
for a, b in zip_longest(list1, list2, fillvalue=0) ]
print(result_sub) # 输出 [-9, -18, 3, 4]