2017-10-08 92 views
1

我必須編寫一個函數,將多個元素插入未知長度的單維數組中。以奇數間隔在單維數組中添加多個元素

例如:

input_array = [1, 2, 3, 4, 5] 

插入各個元素之間的兩個零,給:

output_array = [1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5] 

..... 任何想法?

+1

那麼你有什麼不明白的有關*你*必須寫一個函數的事實呢? –

回答

0

這是兩個版本的代碼。

簡單的for循環:

input_array = [1, 2, 3, 4, 5] 
output_array = [] 
for k in input_array: 
    output_array.append(k) 
    output_array.append(0) 
    output_array.append(0) 
print(output_array) 

使用list comprehensions

input_array = [1, 2, 3, 4, 5] 
output_array = [item for sublist in [[x, 0, 0] for x in input_array] for item in sublist]) 
print(output_array) 
+0

@ Zara44請問這個答案對你有幫助嗎? –

0

我不能說是否提問者,如@Willem指出,在尋找比更快的解決方案他/她自己能夠想出。在現實中,這似乎是一個簡單的任務:

def fill(iterable, padding: tuple): 
    result = list() 

    for i in iterable: 
      # The * symbol is a sequence unpacking and it serves to flatten the values inside result 
      # For example, [*(0, 1, 2)] equals [0, 1, 2] and not [(0, 1, 2)] 
      result.extend([i, *padding]) 

    return result 


if __name__ == "__main__": 
    data = range(1, 6) 
    padding = (0, 0) 

    print(fill(data, padding)) 

我能明顯選擇分配給result代替list任何其他容器類型。

下面就是我的機器上運行時,上面的腳本輸出:

[email protected]:~$ python3.6 ./test.py 
[1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0] 
相關問題