如何实现两个列表的带加法运算交叉连接?
实现两个列表的加法交叉连接
Got it,你要的其实是把list1里的每个元素依次和list2的所有元素相加,然后按顺序收集结果对吧?本质就是笛卡尔积形式的元素相加,下面给你几种Python实现方式,都能得到你要的输出:
方法1:嵌套循环(最直观,适合新手理解)
这是最容易看懂的写法,两层循环遍历两个列表,把每对元素的和追加到结果列表里:
list1 = [5,2,8] list2 = [11,6,3] sum_list = [] # 先遍历list1的每个元素 for num1 in list1: # 再遍历list2的每个元素,和当前num1相加 for num2 in list2: sum_list.append(num1 + num2) print(sum_list) # 输出: [16,11,8,13,8,5,19,14,11]
方法2:列表推导式(简洁Pythonic写法)
Python里可以用列表推导式把嵌套循环浓缩成一行,效率和循环一样,但代码更紧凑:
list1 = [5,2,8] list2 = [11,6,3] sum_list = [num1 + num2 for num1 in list1 for num2 in list2] print(sum_list) # 同样得到预期结果
方法3:用itertools.product(处理复杂笛卡尔积更方便)
如果以后需要处理更多列表的交叉运算,itertools.product可以帮你生成所有元素对,再对每对求和:
from itertools import product list1 = [5,2,8] list2 = [11,6,3] # product(list1, list2)会生成所有(5,11),(5,6),(5,3),(2,11)...这样的元组 sum_list = [a + b for a, b in product(list1, list2)] print(sum_list)
这三种方法都能完美得到你想要的输出,选哪种看你的代码场景和个人习惯就行~
内容的提问来源于stack exchange,提问作者dfsfs fdsfsd
相关产品推荐
相关产品推荐

