将函数的返回变量追加到不同的列表中

时间:2019-03-26 09:16:32

标签: python numpy

将函数返回的变量(多个变量)附加到不同列表的python方法是什么?

假设我们有一个像这样的函数:

def func():
    return np.random.randint(0, 10), np.random.randint(10, 20)

最简单的非pythonic方法是:

l1 = []
l2 = []

for i in range(x):
    # do something
    # do something else
    a, b = func()
    l1.append(a)
    l2.append(b)

或使用numpy:

lst = []
for i in range(x):
    # do something
    # do something else
    lst.append(func())

l1, l2 = np.array(lst).T

或使用here提供的解决方案提取项目。

2 个答案:

答案 0 :(得分:1)

根据情况,这可能会更清洁:

def func(l1, l2):
    l1.append(np.random.randint(0, 10)); l2.append(np.random.randint(10, 20))
    return l1,l2

答案 1 :(得分:1)

一种方法可能是创建一个master-list然后转置:

def func():
    return np.random.randint(0, 10), np.random.randint(10, 20)

masterLst = []    
for i in range(5):
    masterLst.append(func())

l1,l2 = zip(*masterLst)

print(list(l1))
print(list(l2))

输出

[6, 5, 8, 6, 2]
[19, 11, 19, 10, 17]

编辑

来自@hpaulj,是当前方法的一种变体:

def func():
    return np.random.randint(0, 10), np.random.randint(10, 20)

l1,l2 = list(zip(*[func() for _ in range(4)]))

print(list(l1))
print(list(l2))