2017-10-08 2 views
1

不明な長さの1次元配列に複数の要素を挿入する関数を記述する必要があります。例えば複数の要素を奇数の間隔で1次元配列に追加する

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

を与えるために、各要素の間に2つのゼロを挿入:

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

を..... 任意のアイデア?

+1

さてあなたは*あなたが*の機能を記述する必要があるという事実について何を理解していませんか? –

答えて

0

コードの2つのバージョンがあります。

ループ用のシンプルな

list comprehensions使用

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) 

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ノートとして、より速く解決策を探していたかどうかを言うことができません彼/彼女自身は思い付くことができた。実際には、これは簡単な作業のように思える:私は明らかにresultに割り当てられたlistの代わりに他のコンテナタイプを選択することができ

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)) 

。以下は

私のマシン上で実行しているときにどのような上記のスクリプトの出力です:

[email protected]:~$ python3.6 ./test.py 
[1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 5, 0, 0] 
関連する問題