使用' for循环合并两个数组'

时间:2017-07-22 01:32:08

标签: python arrays python-2.7 for-loop array-merge

我想在python 2.7中合并两个数组,使用' for loop '给出:

from array import *
ary_1 = array ('i',[11,12,13])
ary_2 = array ('i',[14,15,16])
ary_3 = array ('i')

应该在 ary_3 上提供输出,因此 ary_3 会按特定顺序显示:

ary_3 = array ('i',[11,12,13,14,15,16])

到目前为止,这是我的代码:

from array import *
ary_1 = array ('i',[11,12,13])
ary_2 = array ('i',[14,15,16])
ary_3 = array ('i')
ary_len = len (ary_1) + len (ary_2)
for i in range (0,ary_len):
    ary_3.append (ary_1 [i])
    ary_3.append (ary_2 [i])
    if len (ary_3) == len (ary_1) + len (ary_2):
       print ary_3,
       break

然后输出是:

array('i',[11,14,12,15,13,16])

实际上不是按顺序排列,如果我在 ary_1 ary_2 上添加新整数,则会给出&#34; 索引超出范围< /强>&#34;错误,所以我发现 ary_1 ary_2 应该有相等的整数/秒来防止此错误。

1 个答案:

答案 0 :(得分:5)

如果要组合数组,可以使用内置方法.extend

ary_1.extend(ary_2)
print ary_1 #array('i', [11, 12, 13, 14, 15, 16])

正如SethMMorton在评论中指出的那样,如果你不想覆盖你的第一个数组:

ary_3 = ary_1 + ary_2
print ary_3 #array('i', [11, 12, 13, 14, 15, 16])

您应该使用上述方法之一,但出于学习目的 在你原来的for循环中你通过

(错误地)交错两个数组
ary_3.append (ary_1 [i])
ary_3.append (ary_2 [i])

如果你想保留for循环,它应该类似于:

ary_1_len = len(ary_1)
for i in range (0,ary_len):
    if i < ary_1_len:
       ary_3.append (ary_1 [i])
    else:
       ary_3.append (ary_2 [i-ary_1_len])
    if len (ary_3) == len (ary_1) + len (ary_2):
       print ary_3
       break

这样你就可以使用第一个数组填充第三个数组,然后填充第二个数组。