You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并不同形状数组:请求实现特定元素配对组合逻辑

解决不同形状数组合并的问题

嘿,我完全理解你被这个问题卡住的感觉!其实核心就是把两个数组对应位置的元素做嵌套配对,用Python的话很容易实现,我给你两种方案,一种是容易理解的循环写法,另一种是更简洁的列表推导式。

思路拆解

你需要的逻辑很明确:

  • 取array_a里的第i个元素,和array_b里的第i个子数组的每一个元素,两两组成新的子数组
  • 把所有这些新子数组按顺序收集到array_c里

方案1:分步循环写法(易理解)

这种写法逻辑清晰,适合刚接触这类操作的情况,每一步都能看明白:

array_a = [1,2,3,4,5]
array_b = [[2, 4, 8, 16, 32], [3, 9, 27, 81, 243], [4, 16, 64, 256, 1024], [5, 25, 125, 625, 3125]]

array_c = []
# 用zip把array_a和array_b的对应元素配对遍历
for a_element, sub_array in zip(array_a, array_b):
    # 遍历当前子数组里的每个元素,和a_element组成新数组
    for num in sub_array:
        array_c.append([a_element, num])

# 输出结果就是你想要的array_c
print(array_c)

方案2:列表推导式(简洁高效)

如果喜欢更紧凑的代码,一行就能搞定,逻辑和上面的循环完全一致:

array_a = [1,2,3,4,5]
array_b = [[2, 4, 8, 16, 32], [3, 9, 27, 81, 243], [4, 16, 64, 256, 1024], [5, 25, 125, 625, 3125]]

array_c = [[a, num] for a, sub_b in zip(array_a, array_b) for num in sub_b]

小补充

  • 这里用zip()来配对两个数组的对应元素,如果array_a和array_b长度不一样,zip()会自动以较短的数组长度为准停止遍历。比如你的例子里array_a有5个元素,array_b只有4个,那array_a的最后一个元素5不会被处理;如果需要处理所有元素,可以用itertools.zip_longest,不过看你的期望结果应该不需要这个~

内容的提问来源于stack exchange,提问作者shan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:19:51