以奇数间隔在单维数组中添加多个元素

时间:2017-10-08 12:06:51

标签: arrays python-3.x vector

我必须编写一个函数,将多个元素插入到未知长度的单个维数组中。

例如:

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

在每个元素之间插入两个零,以提供:

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

..... 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这是代码的两个版本。

简单循环:

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)

答案 1 :(得分: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))

我显然可以选择任何其他容器类型来代替分配给list的{​​{1}}。

以下是在我的机器上运行时上述脚本输出的内容:

result