在python中同时生成多个数组

时间:2017-10-09 07:46:55

标签: python arrays function

假设amount是数组的数量,b是数组的长度。我不知道如何填写这个

def MultiList(amount,length)

如果我将MultiList函数称为

,我想这样做
MultiList(5,5)

输出将是

(array ([0,0,0,0,0]), array ([0,0,0,0,0]), array ([0,0,0,0,0]), array ([0,0,0,0,0]),array ([0,0,0,0,0]))

4 个答案:

答案 0 :(得分:3)

对于你的简单案例:

def gen_multi_list(amount, length, value=0):
    return [[value]*length for _ in range(amount)]

print(gen_multi_list(5,5))

输出:

[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]

答案 1 :(得分:1)

您可以使用numpy tuple执行此任务。

import numpy as np
def multilist(amount, length):
    return tuple(np.zeros(length, dtype=np.int) for _ in range(amount))
print(multilist(5,5))

输出:

(array([0, 0, 0, 0, 0]), array([0, 0, 0, 0, 0]), array([0, 0, 0, 0, 0]), array([0, 0, 0, 0, 0]), array([0, 0, 0, 0, 0]))

答案 2 :(得分:1)

您可以在函数中使用连续循环创建多个数组。创建列表列表然后将其转换为元组,因为我们想要像输出一样的元组。

def Multilist(amount, length):
    tup = [];
    for i in range(amount):
        arr = []
        for j in range(length):
            arr.append(0)
        tup.append(arr)
    return tuple(tup)
print(Multilist(5,5))

输出

([0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0])

答案 3 :(得分:0)

Multilist = lambda amount, length : tuple([[0]*amount ]*length)
print(Multilist(5,5))

输出: ([0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0])