Python嵌套列表内子列表间逐元素相乘的实现方法
Python嵌套列表子列表逐元素两两相乘实现方法
实现代码(新手友好无额外依赖)
a = [[2, 3, 1, 6], [1, 6, 1, 9], [1, 1, 1, 2]] result = [] # 遍历每一个子列表作为基准 for base_idx, base_list in enumerate(a): current_result_group = [] # 遍历所有其余子列表做相乘 for other_idx, other_list in enumerate(a): # 跳过和自身配对的情况 if base_idx == other_idx: continue # 逐元素配对相乘 multiply_list = [x * y for x, y in zip(base_list, other_list)] current_result_group.append(multiply_list) result.append(current_result_group) # 打印验证结果 print(result)
运行上述代码即可得到你需要的输出:[[[2, 18, 1, 54], [2, 3, 1, 12]], [[2, 18, 1, 54], [1, 6, 1, 18]], [[2, 3, 1, 12], [1, 6, 1, 18]]]
简洁版写法(列表推导式)
如果偏好更精简的代码,可以直接用嵌套列表推导式实现相同逻辑:
a = [[2, 3, 1, 6], [1, 6, 1, 9], [1, 1, 1, 2]] result = [[[x*y for x,y in zip(base, other)] for idx, other in enumerate(a) if idx != base_idx] for base_idx, base in enumerate(a)]
注意事项
- 代码默认所有子列表长度一致,若存在子列表长度不同的情况,
zip会自动以最短子列表的长度为准做配对计算,有严格长度要求可提前添加长度校验逻辑。
内容的提问来源于stack exchange,提问作者chicken
相关产品推荐
相关产品推荐

