Python中使用for循环交替合并两个数组的问题
修正交替合并数组的代码问题
原代码的核心问题是循环索引的步长设置错误:v[::2]会让i只取0、2、4……这样的偶数索引,导致你只处理了arr1和arr2中一半的元素,剩下的位置自然留空为None。
修正后的for循环实现
直接遍历每个元素的原始索引,通过计算目标位置来填充合并数组:
arr1 = [1,3,5,7,9,11,13,15,17,19,21,23,25,27,29] arr2 = [2,4,6,8,10,12,14,16,18,20,22,24,26,28,30] merged = [None] * 2 * len(arr1) for j in range(len(arr1)): merged[2 * j] = arr1[j] # 每个arr1元素放在合并数组的偶数位 merged[2 * j + 1] = arr2[j] # 每个arr2元素放在对应奇数位 print(merged)
这段代码会输出完整的交替数组:[1, 2, 3, 4, 5, 6, ..., 29, 30],完全兼容整数和字符串数组。
更简洁的实现方式(可选)
如果不想手动维护索引,也可以用zip配合列表推导式,代码更紧凑且同样兼容多种类型:
merged = [item for pair in zip(arr1, arr2) for item in pair]
zip(arr1, arr2)会把两个数组的对应元素配对成元组(比如(1,2)、(3,4)),再通过嵌套推导式把每个元组里的元素依次展开,直接得到交替合并的数组。
内容的提问来源于stack exchange,提问作者Phasco
相关产品推荐
相关产品推荐

