2016-02-24 96 views
0
#FUNCTION 
def merge_array(a, b): 

    c = [] 

    for i in a: 
     c.append(i) 

    for z in b: 
     if z not in c: 
      c.append(z) 

    c.sort() 

    return c 

#MAIN 
a = [1,5,2,8,9] 
b = [8,4,2,8,10,3,14] 

print("Array 1: {}".format(a)) 
print("Array 2: {}".format(b)) 
print("Merged List: {}".format(merge_array(a, b))) 

print("Array 1 empty: {}".format(a)) 
print("Array 2 empty: {}".format(b)) 

試圖把a.pop()和b.pop()for循環之後,但不會完全抹去的元素和變化「C」如何空出兩個數組的元素合併兩個數組一起

回答

0

你可以這樣做:

>>> c = set() 
>>> while len(a)>0: 
... c.add(a.pop()) 
... 
>>> while len(b)>0: 
... c.add(b.pop()) 
... 
>>> a 
[] 
>>> b 
[] 
>>> c 
set([1, 2, 3, 4, 5, 8, 9, 10, 14]) 
>>> x = list(c) 
>>> x 
[1, 2, 3, 4, 5, 8, 9, 10, 14] 

希望它有幫助。

+0

它會幫助,但我需要它實際上追加到空列表C = [] – rawrtillyoudrop

+0

像原來的代碼做這種不處理重複。他的樣品非常豐富。 –

+0

稍等片刻 – Eric

0

不太清楚,如果這是你在找什麼,但如果你只是想清單加在一起,照顧重複的嘗試:

list(set(a+b)) 
0

pop作品取決於你怎麼做。這聽起來像是你從前面迭代並彈出後面。另一種方法是在完成後使用列表解析來清除數組。你的例子並沒有擺脫a中的重複,但在b中擺脫了它們。如果你根本不想重複,在評論中有一個簡短的例子,但我保持原來的算法。

def merge_array(a, b): 
    # if you only want unique values from each you could 
    # c = set(a + b) 
    # 
    # ... but following your recipe 
    c = a[:] 
    for z in b: 
     if z not in c: 
      c.append(z) 

    # in either case, this clears the originals 
    del a[:] 
    del b[:] 
    return sorted(c) 

#MAIN 
a = [1,5,2,8,9] 
b = [8,4,2,8,10,3,14] 

print("Array 1: {}".format(a)) 
print("Array 2: {}".format(b)) 
print("Merged List: {}".format(merge_array(a, b))) 

print("Array 1 empty: {}".format(a)) 
print("Array 2 empty: {}".format(b))